java 并交集运算

  在面试的过程中,忘记了List中还可以进行交并集运算,这也是常见的数据问题啊,这也是常见的数据结构问题---集合,面试的过程中一直没有想到这种数据结构

  java中API中已经集成了并交集的运算。

  代码:(from http://pengyan5945.iteye.com/blog/1311597)

  交集的API:使用retainAll即可

  并集的API:先removeAll 再addAll

import java.util.ArrayList;

import java.util.HashSet;

import java.util.List;

import java.util.Set;



public class ListTest {

    public static void main(String[] args) {

         testIntersection();

         testUnion();

         testIntersectionSet();

    }

    private static void testIntersection() {

         List<String> list1 = new ArrayList<String>();

         List<String> list2 = new ArrayList<String>();

         list1.add("abc");  list2.add("abc");

         list1.add("123");  list2.add("123");

         list1.add("ABC");

         list2.add("XYZ");

         list1.removeAll(list2);

         list1.addAll(list2);

         System.out.println("并集元素个数是:" + list1.size());      



    }

    private static void testIntersectionSet() {

         List<String> list1 = new ArrayList<String>();

         List<String> list2 = new ArrayList<String>();

         list1.add("abc");  list2.add("abc");

         list1.add("123");  list2.add("123");

         list1.add("ABC");

         list2.add("XYZ");

         Set<String> set =new HashSet<String>();

         addList2Set(set, list1);

         addList2Set(set, list2);

         System.out.println("并集元素个数是:" + set.size());      



    }

    private static void testUnion() {

         List<String> list1 = new ArrayList<String>();

         List<String> list2 = new ArrayList<String>();

         list1.add("abc");  list2.add("abc");

         list1.add("123");  list2.add("123");

         list1.add("ABC");

         list2.add("XYZ");

         list1.retainAll(list2);

         System.out.println("交集元素个数是:"+list1.size());

    }

    private static void addList2Set(Set<String> set,List<String> list){

        for (String str : list) {

            set.add(str);

        }

    }

}
View Code

 

你可能感兴趣的:(java)