0

我有一个自定义对象数组列表,该对象必须在一个数组列表中,但是我在列表中有一些重复项,我想在添加到列表之前进行检查。这怎么可能实现。受害者社会安全号码是唯一的。下面是我的代码:

代码

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

假设公民覆盖等于,你可以这样做

 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 = new HashSet();

而(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);       

}

List list = new ArrayList(hashset);

于 2013-04-12T03:08:11.183 回答
0

我在这里可能完全错了,但是 for 循环不能解决您的问题吗?您可以只比较您将要添加到数组列表中所有元素的内容,如果没有匹配项添加它,如果没有匹配项?

于 2013-04-12T03:06:20.153 回答