如何在java中比较两个类型字符串列表

时间:2015-11-17 10:46:28

标签: java list

我需要检查一个列表或数组的元素是否存在于其他列表中。

列表大小相同。

除了排序是否可能有任何简单的解决方案?

3 个答案:

答案 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
 }
相关问题