Java Compare Two Lists

后端 未结 10 593
情深已故
情深已故 2020-11-22 13:25

I have two lists ( not java lists, you can say two columns)

For example

**List 1**            **Lists 2**
  milan                 hafil
  dingo               


        
10条回答
  •  情深已故
    2020-11-22 13:25

    Are these really lists (ordered, with duplicates), or are they sets (unordered, no duplicates)?

    Because if it's the latter, then you can use, say, a java.util.HashSet and do this in expected linear time using the convenient retainAll.

        List list1 = Arrays.asList(
            "milan", "milan", "iga", "dingo", "milan"
        );
        List list2 = Arrays.asList(
            "hafil", "milan", "dingo", "meat"
        );
    
        // intersection as set
        Set intersect = new HashSet(list1);
        intersect.retainAll(list2);
        System.out.println(intersect.size()); // prints "2"
        System.out.println(intersect); // prints "[milan, dingo]"
    
        // intersection/union as list
        List intersectList = new ArrayList();
        intersectList.addAll(list1);
        intersectList.addAll(list2);
        intersectList.retainAll(intersect);
        System.out.println(intersectList);
        // prints "[milan, milan, dingo, milan, milan, dingo]"
    
        // original lists are structurally unmodified
        System.out.println(list1); // prints "[milan, milan, iga, dingo, milan]"
        System.out.println(list2); // prints "[hafil, milan, dingo, meat]"
    

提交回复
热议问题