我有一个自定义对象数组列表,该对象必须在数组列表中,但我在列表中有一些重复项,我想在添加到列表之前执行检查。如何实现这一目标。 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);
假设公民优先于平等,你可以这样做
if (!crime.getVictims().contains(victims)) {
crime.getVictims().add(victims);
}
虽然通常在不允许重复时,解决方案是Set
如果你有疑问如何覆盖equals / hashCode读取http://javarevisited.blogspot.com/2011/10/override-hashcode-in-java-example.html
你可以将arraylist转换为set和back来摆脱重复或直接使用只允许排序的唯一元素的结构:LinkedHashSet
您可以使用哈希集添加对象并将其转换为Arraylist。这可以帮助您检查受害者是否是唯一的。
码
设置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);
我在这里可能完全错了,但for循环不会解决你的问题吗?你可以比较你要添加到arraylist中的所有元素,如果没有匹配添加它,如果没有?