在面试的过程中,忘记了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); } } }