如何防止对象ArrayList中的重复

时间:2013-04-12 02:51:56

标签: java arraylist duplicates duplicate-removal

我有一个自定义对象数组列表,该对象必须在数组列表中,但我在列表中有一些重复项,我想在添加到列表之前执行检查。如何实现这一目标。 victimSocialSecurityNumber是唯一的。以下是我的代码:

CODE

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 个答案:

答案 0 :(得分:3)

你可以将arraylist转换为set并返回去除重复项或直接使用只允许排序的唯一元素的结构:LinkedHashSet

答案 1 :(得分:1)

假设公民优先于等于,你可以这样做

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

虽然通常在不允许重复时,解决方案是设置

如果您怀疑如何覆盖equals / hashCode,请阅读http://javarevisited.blogspot.com/2011/10/override-hashcode-in-java-example.html

答案 2 :(得分:1)

您可以使用哈希集添加对象并将其转换为Arraylist。这可以帮助您检查受害者是否是唯一的。

CODE

设置hashset = new 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);       

}

List list = new ArrayList(hashset);

答案 3 :(得分:0)

我在这里可能完全错了,但for循环不能解决你的问题吗?你可以比较你要添加到arraylist中的所有元素,如果没有匹配添加它,如果没有?