[英]How To Prevent Duplicates In Object ArrayList
我有一个自定义对象数组列表,该对象必须在数组列表中,但是我在列表中有一些重复项,我想在添加到列表之前进行检查。 如何做到这一点。 受害人SocialSecurityNumber是唯一的。 下面是我的代码:
码
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);
您可以将arraylist转换为set并返回以摆脱重复项,或者直接使用仅允许排序的唯一元素的结构:LinkedHashSet
假设公民优先于等于,您可以这样做
if (!crime.getVictims().contains(victims)) {
crime.getVictims().add(victims);
}
尽管通常在不允许重复时解决方案是“设置”
如果您不确定如何覆盖equals / hashCode,请阅读http://javarevisited.blogspot.com/2011/10/override-hashcode-in-java-example.html
您可以使用哈希集添加对象并将其转换为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);
}
列表列表= new ArrayList(hashset);
我在这里可能是完全错误的,但是for循环不能解决您的问题吗? 您可以将要添加的内容与arraylist中的所有元素进行比较,如果没有匹配项,请将其添加,如果没有,则添加?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.