JAVA 8を利用して個の工具類を建てて集合の交差を求めて、そして集めて、差は集めます
public class CollectionUtil {
/**
*
* @param collection
* @return
*/
public static boolean isEmpty(Collection> collection) {
return (collection == null || collection.isEmpty());
}
/**
*
* @param collection
* @return
*/
public static boolean isNotEmpty(Collection> collection) {
return !isEmpty(collection);
}
/**
*
* @param masterList
* @param slaveList
* @param
* @return
*/
public static List getIntersection(List masterList, List slaveList) {
return masterList.stream().filter(slaveList::contains).collect(Collectors.toList());
}
/**
*
* @param masterList
* @param slaveList
* @param
* @return
*/
public static List getUnionSet(List masterList, List slaveList) {
List list = new ArrayList<>();
list.addAll(masterList);
list.addAll(slaveList);
return list.stream().distinct().collect(Collectors.toList());
}
/**
*
* @param masterList
* @param slaveList
* @param
* @return
*/
public static List getDifferenceSet(List masterList, List slaveList) {
return masterList.stream().filter(t -> !slaveList.contains(t)).collect(Collectors.toList());
}
//
public static void main(String[] args) {
List list1 = Arrays.asList(1, 2, 3);
List list2 = Arrays.asList(3, 4, 5);
System.out.println("========= =========");
List intersection = CollectionUtil.getIntersection(list1,list2);
intersection.forEach(System.out::println);
System.out.println("========= =========");
List unionSet = CollectionUtil.getUnionSet(list1,list2);
unionSet.forEach(System.out::println);
System.out.println("========= =========");
List differenceSet = CollectionUtil.getDifferenceSet(list1,list2);
differenceSet.forEach(System.out::println);
}
}
コンソール印刷結果
==============================Disconnected from the target VM,address:'127.0.0.1:61891',transport:'socket'1 2 3 4 5========交差を求める=======1
アパッチも使えますCollectionsパッケージのCollectionsUtilsのツールクラス
package org.apache.commons.collections