- 締切済み
LabelValueBeanで作成したリストの重複を削除したい
まともにコーディングしたこともないJAVA初心者です。 LabelValueBeanで作成したリストの重複を削除したいのですが、方法がわかりません。 例えば下記のようなプログラム labels.add(new LabelValueBean("select","0")); for(int count = 0 ; count<data.size() ; count++){ TestResultBean row = (TestResultBean)data.get(count); labels.add(new LabelValueBean(row.getRonten_nm(),row.getRonten_cd().toString())); } において、このままだと select,0 AA,1 AB,2 AC,3 AA,1 AA,1 AA,1 AB,2 AD,4 こう排出されてしまうのに対して select,0 AA,0 AB,0 AC,0 AD,0 と返してほしいのです。 問題解決にご協力をお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- hoge_piyo
- ベストアンサー率57% (15/26)
labels の現在の型はなんでしょうか? そもそも最初から重複が必要ないなら、そのLabelValueBeanを格納するコレクションの型を 1.Setを継承した型にする(ふつうは、HashSet、順番を考慮するならTreeSet、など) 2.格納するクラス(この場合はLabelValueBean)ではequalsメソッドを必要に応じてオーバーライドする というのがJavaでの基本的なやり方です。 このコードだけではLabelValueBeanをどう使いたいのかがいまいち分かりませんが、LabelValueBeanのequalsの実装はlabelが一致しなくてもvalueが一致したらtrueを返しているようです。 なのでもし、labelとvalueの両方が一致した場合のみ同じオブジェクトとみなしたいなら、オーバーライドする必要があります。 http://java.sun.com/javase/ja/6/docs/ja/api/java/util/Set.html あとは、出力するときに重複したものを除くという事も考えられますが・・・この labelsというオブジェクトをどう使うのかによるので、なんともいえません。