dポイントプレゼントキャンペーン実施中!

まともにコーディングしたこともない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

と返してほしいのです。
問題解決にご協力をお願いします。

A 回答 (1件)

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 …


あとは、出力するときに重複したものを除くという事も考えられますが・・・この labelsというオブジェクトをどう使うのかによるので、なんともいえません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A