stream交集、差集、并集、去重并集
String[] strArr = targetHeadCost.getCurrentCostChangeReason().split(",");
List<String> strList = Arrays.stream(strArr).collect(Collectors.toList());
List<String> reasonList = model.getCurrentCostChangeReason();
if (null != reasonList && reasonList.size() > 0) {
String reasonStr = String.join(",", reasonList);
targetHeadCost.setCurrentCostChangeReason(reasonStr);
}
@Test
public void LambTest() {
List<String> list1 = new ArrayList();
list1.add("1111");
list1.add("2222");
list1.add("3333");
List<String> list2 = new ArrayList();
list2.add("3333");
list2.add("4444");
list2.add("5555");
List<String> intersection = list1.stream().filter(item -> list2.contains(item)).collect(Collectors.toList());
System.out.println("---得到交集 intersection---");
intersection.parallelStream().forEach(System.out::println);
intersection.parallelStream().forEach(x->{
System.out.println("x ="+x);
});
List<String> reduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(Collectors.toList());
System.out.println("---得到差集 reduce1 (list1 - list2)---");
reduce1.parallelStream().forEach(System.out::println);
List<String> reduce2 = list2.stream().filter(item -> !list1.contains(item)).collect(Collectors.toList());
System.out.println("---得到差集 reduce2 (list2 - list1)---");
reduce2.parallelStream().forEach(System.out::println);
List<String> listAll = list1.parallelStream().collect(Collectors.toList());
List<String> listAll2 = list2.parallelStream().collect(Collectors.toList());
listAll.addAll(listAll2);
System.out.println("---得到并集 listAll---");
listAll.parallelStream().forEach(System.out::println);
List<String> listAllDistinct = listAll.stream().distinct().collect(Collectors.toList());
System.out.println("---得到去重并集 listAllDistinct---");
listAllDistinct.parallelStream().forEach(System.out::println);
System.out.println("---原来的List1---");
list1.parallelStream().forEach(System.out::println);
System.out.println("---原来的List2---");
list2.parallelStream().forEach(System.out::println);
}
stream中list转map
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
Map<String, String> map = list.stream().collect(Collectors.toMap(Function.identity(),Function.identity()));
map.forEach((x, y) -> System.out.println("key:" + x +", value:"+ y));
List<UserBean> userList = new ArrayList<>();
UserBean userBean = new UserBean("张三","热爱学习", 21);
userList.add(userBean);
userBean = new UserBean("张三2","热爱学习2", 25);
userList.add(userBean);
userBean = new UserBean("张三33","热爱学习3", 27);
userList.add(userBean);
userBean = new UserBean("张三4","热爱学习2", 26);
userList.add(userBean);
System.out.println(userList);
Map<String,Integer> map =
userList.stream().collect(Collectors.toMap(UserBean::getUserName, UserBean::getAge,
(key1,key2) ->key2));
System.out.println(map);
排序
List<People> peopleList = new ArrayList<>();
People lihua1 = People.builder().id(1).name("lihua1").build();
People lihua2 = People.builder().id(2).name("lihua2").build();
People lihua3 = People.builder().id(3).name("lihua3").build();
People lihua4 = People.builder().id(4).name("lihua4").build();
Collections.addAll(peopleList, lihua1, lihua2, lihua3, lihua4);
System.out.println("--------------------顺序输出-------------------");
peopleList.stream().sorted(Comparator.comparing(People::getId))
.forEach(System.out::println);
System.out.println("--------------------逆序输出-------------------");
peopleList.stream().sorted(Comparator.comparing(People::getId).reversed())
.forEach(System.out::println);
System.out.println("--------------------求最小值-------------------");
People peopleMin = peopleLst.stream().min(Comparator.comparing(People::getId))
.orElse(null);
System.out.println(peopleMin);
System.out.println("--------------------求最大值--------------------");
People peopleMax = peopleList.stream().max(Comparator.comparing(People::getId))
.orElse(null);
System.out.println(peopleMax);