使用java中的contains在添加到两维列表之前检查重复项
我有以下代码:使用java中的contains在添加到两维列表之前检查重复项,java,list,collections,Java,List,Collections,我有以下代码: List<Check<String, String>> listAdd = new ArrayList<Check<String, String>>(); for (list1<String, String> h : list1_a) { for (list2<String, String> s : list2_a) { if (condition) {
List<Check<String, String>> listAdd = new ArrayList<Check<String, String>>();
for (list1<String, String> h : list1_a) {
for (list2<String, String> s : list2_a) {
if (condition) {
//if(!listAdd.contains(Check(h.getString(),s.getString())
listAdd.add(new Check(h.getString(),s.getString()));
}
}
}
List listAdd=new ArrayList();
对于(列表1 h:列表1_a){
对于(列表2 s:列表2_a){
如果(条件){
//如果(!listAdd.contains)(检查(h.getString(),s.getString())
添加(新检查(h.getString(),s.getString());
}
}
}
当列表中有列表时,我无法理解如何使用contains。请提供帮助。谢谢尝试以下操作:
if (condition) {
Check c = new Check(h.getString(), s.getString());
if (!list.contains(c)) {
list.add(c);
}
}
确保在Check
类中实现了equals()
和hashCode()
方法
另一种方法是使用
java.util.Set
接口的一些实现来切换java.util.List
。java.util.Set
子类支持内部的唯一对象,因此您将不再需要担心某个对象是否存在于您的集合中。如果需要,请尝试用它代替//(!listAdd.contains(选中(h.getString(),s.getString());
使用
Set
类型是不可能的吗?@ChrisCooney我对java完全陌生,无法有效地解决这个问题@ChrisCooney的意思是,如果listAdd
的类型是Set
而不是List
,那么您可以添加,而不必检查它是否已经存在;因为它只会在它还不存在的情况下添加xist.无论哪种方式,类检查
都需要有行为良好的equals
和hashCode
方法,您可以使用这些方法的代码更新问题,以便其他人可以使用其类型的.equals()方法来帮助正确的^contains()。因此,您必须在检查中实现这一点。java
if(!listAdd.contains(new Check(h.getString(),s.getString());