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

 

posted on 2015-04-17 10:51  zhouzhou0615  阅读(864)  评论(0编辑  收藏  举报

导航