0

カスタム オブジェクト配列リストがあります。オブジェクトは配列リストにある必要がありますが、リストに重複があり、リストに追加する前にチェックを実行したいと考えています。どうすればこれを達成できますか。victimSocialSecurityNumber は一意です。以下は私のコードです:

コード

while (rs.next()){

       Citizens victims = new Citizens();
       victims.setSocialSecurityNumber(rs.getInt("victimSocialSecurityNumber"));

       victims.setfName(rs.getString("victimFName"));

       victims.setlName(rs.getString("victimLName"));

       victims.setPhoto(rs.getString("victimPhoto"));

       victims.setName(rs.getString("victimFName") +" "+ rs.getString("victimLName"));


       crime.getVictims().add(victims);         
4

4 に答える 4

3

arraylist を set に変換して元に戻し、重複を取り除くか、ソートされた一意の要素のみを許可する構造を直接使用できます: LinkedHashSet

于 2013-04-12T02:53:09.883 に答える
2

Citizens が equals をオーバーライドすると仮定すると、次のように実行できます

 if (!crime.getVictims().contains(victims)) {
       crime.getVictims().add(victims);  
 }

ただし、通常、重複が許可されていない場合、ソリューションは Set です

equals / hashCode をオーバーライドする方法に疑問がある場合は、http://javarevisited.blogspot.com/2011/10/override-hashcode-in-java-example.htmlを参照してください。

于 2013-04-12T03:06:06.040 に答える
1

ハッシュ セットを使用してオブジェクトを追加し、それを Arraylist に変換できます。これは、被害者が一意であるかどうかを確認するのに役立ちます。

コード

ハッシュセットを設定 = 新しい HashSet();

while (rs.next()){

   Citizens victims = new Citizens();
   victims.setSocialSecurityNumber(rs.getInt("victimSocialSecurityNumber"));

   victims.setfName(rs.getString("victimFName"));

   victims.setlName(rs.getString("victimLName"));

   victims.setPhoto(rs.getString("victimPhoto"));

   victims.setName(rs.getString("victimFName") +" "+ rs.getString("victimLName"));

   hashset.add(victims);       

}

リスト リスト = 新しい ArrayList(ハッシュセット);

于 2013-04-12T03:08:11.183 に答える
0

ここで私は完全に間違っている可能性がありますが、for ループはあなたの問題を解決しませんか? arraylist 内のすべての要素に追加しようとしているものを比較するだけで、一致するものがない場合は追加し、ない場合は追加できますか?

于 2013-04-12T03:06:20.153 に答える