1、測試代碼
package com.example.demo;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author LH
* @date 2020-04-28 18:11
*/
public class Java8Test extends DemoApplicationTests {
@Test
public void CollectionTest() {
List<String> list1 = new ArrayList<>();
list1.add("張傑");
list1.add("蕭敬騰");
list1.add("金玟岐");
list1.add("鄧紫棋");
list1.add("邁克爾傑克遜");
List<String> list2 = new ArrayList<>();
list2.add("張傑");
list2.add("唐僧");
list2.add("孫悟空");
list2.add("豬八戒");
list2.add("沙僧");
System.out.println("-- 交集(list1 n list2)...start");
List<String> intersectList = list1.stream().filter(o -> list2.contains(o)).collect(Collectors.toList());
intersectList.forEach(o -> System.out.println(o));
System.out.println();
System.out.println("-- 差集(list1 - list2)...start");
List<String> reduce1 = list1.stream().filter(o -> !list2.contains(o)).collect(Collectors.toList());
reduce1.forEach(o -> System.out.println(o));
System.out.println();
System.out.println("-- 差集(list2 - list1)...start");
List<String> reduce2 = list2.stream().filter(o -> !list1.contains(o)).collect(Collectors.toList());
reduce2.parallelStream().forEach(System.out::println);
System.out.println();
System.out.println("-- 並集(list1 U list2)...start");
List<String> listTemp1 = list1.parallelStream().collect(Collectors.toList());
List<String> listTemp2 = list2.parallelStream().collect(Collectors.toList());
listTemp1.addAll(listTemp2);
listTemp1.parallelStream().forEach(System.out::println);
System.out.println();
System.out.println("-- 去重並集(list1 U list2)...start");
List<String> listAllDistinct = listTemp1.stream().distinct().collect(Collectors.toList());
listAllDistinct.parallelStream().forEach(System.out::println);
System.out.println();
System.out.println(list1);
System.out.println(list2);
}
}
2、測試結果打印
-- 交集(list1 n list2)...start
張傑
-- 差集(list1 - list2)...start
蕭敬騰
金玟岐
鄧紫棋
邁克爾傑克遜
-- 差集(list2 - list1)...start
豬八戒
沙僧
唐僧
孫悟空
-- 並集(list1 U list2)...start
唐僧
張傑
金玟岐
蕭敬騰
孫悟空
張傑
沙僧
鄧紫棋
豬八戒
邁克爾傑克遜
-- 去重並集(list1 U list2)...start
金玟岐
唐僧
蕭敬騰
張傑
鄧紫棋
沙僧
孫悟空
邁克爾傑克遜
豬八戒
[張傑, 蕭敬騰, 金玟岐, 鄧紫棋, 邁克爾傑克遜]
[張傑, 唐僧, 孫悟空, 豬八戒, 沙僧]