Java8实现ArrayList求交集并集差集
java stream本⽂借助Java8的Stream API完成ArrayList集合运算:求交集、并集和差集!以下代码可⽴刻复制⾄IDE运⾏调试!
public class CollectionUtil {
/**
* 判断为空
*/
public static boolean isEmpty(Collection<?> collection) {
return (collection == null || collection.isEmpty());
}
/**
* 判断⾮空
*/
public static boolean isNotEmpty(Collection<?> collection) {
return !isEmpty(collection);
}
/**
* 求交集
*
* @param masterList 主数据列表
* @param slaveList 从数据列表
* @param <T>
* @return
*/
public static <T> List<T> getIntersection(List<T> masterList, List<T> slaveList) {
return masterList.stream().filter(slaveList::contains).List());
}
/**
* 求差集
*
* @param masterList 主数据列表
* @param slaveList 从数据列表
* @param <T>
* @return
*/
public static <T> List<T> getDifferenceSet(List<T> masterList, List<T> slaveList) {
return masterList.stream().filter(t -> !ains(t)).List());
}
/**
* 求并集
*
* @param masterList 主数据列表
* @param slaveList 从数据列表
* @param <T>
* @return
*/
public static <T> List<T> getUnionSet(List<T> masterList, List<T> slaveList) {
List<T> list = new ArrayList<>();
list.addAll(masterList);
list.addAll(slaveList);
return list.stream().distinct().List());
}
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(1);
list1.add(2);
list1.add(3);
List<Integer> list2 = new ArrayList<>();
list2.add(3);
list2.add(4);
list2.add(2);
System.out.println(" ====== 求交集 ====== ");
List<Integer> intersection = Intersection(list1, list2);
intersection.forEach(System.out::println);
System.out.println(" ====== 求差集 ====== ");
List<Integer> differenceSet = DifferenceSet(list1, list2); differenceSet.forEach(System.out::println);
System.out.println(" ====== 求并集 ====== ");
List<Integer> unionSet = UnionSet(list1, list2);
unionSet.forEach(System.out::println);
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论