我需要检查一个列表或数组的元素是否存在于其他列表中。
列表大小相同。
除了排序是否可能有任何简单的解决方案?
答案 0 :(得分:2)
你说得对,如果它们是数组你不能使用Arrays.equals()
,如果它们是List<>
,那么你不能只使用equals。在这两种情况下,他们也会检查订单。
所以,如果没有编写自己的比较算法,那么主要选项是在两个列表中使用Collections.sort()
。
如果您不需要检查重复项,可以使用HashSet
将两个列表放入addAll
,然后比较两个HashSet
或只使用List.containsAll
。坏消息是,如果您需要比较可能包含重复元素的列表,那么它们都会有相同的限制,那么它可能会给出不正确的结果。即“bob”,“bob”,“fred”将等同于“bob”,“fred”,“fred”。
答案 1 :(得分:0)
请参考以下示例:
public class Example{
public static void main(String[] args){
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
list1.add("A");
list1.add("B");
list1.add("C");
list2.add("C");
list2.add("X");
list2.add("Y");
for(String s : list1){
if(list2.contains(s)){
System.out.println("List 2 contains: " + s);
}
}
}
}
上面的代码绝不是达到你要求的最干净或最紧凑的方式。但鉴于提供的信息,这应该足够了。
答案 2 :(得分:0)
要检查list1
的某个项目是否在list2
,您可以使用此代码:
ArrayList<Integer> list1 = new ArrayList<>();
ArrayList<Integer> list2 = new ArrayList<>();
//Adding some object to the list here
int yourIndex = 1;
if(list2.contains(list1.get(yourIndex)))
{
//do what you want
}