Stream常用方法
1. 剔除重复值
List<T> list = snList.stream().distinct().collect(Collectors.toList()
或者使用hutool的
collUtil.distinct()
2. 切割List成为字符串
String str = snList.stream().collect(Collectors.joining("','"))
3. 将对List进行筛选
List<String> list = list.stream().map(l -> l.getStr()).collect(Collectors.toList())
4. 判断List某个值是否存在
使用hutool的方法
Filter<String> filterCustSn =s->s.equals("张三");
if (StrUtil.isNotEmpty(CollUtil.findOne(snList,filterCustSn))){
continue;
}
Stream
boolean bol = list.stream.filter(m->m.getStr().equals("张三")).findAny().isPresent();
5.根据条件获取List的某个值
T t = list.stream.filter(m->m.getStr().equals("张三")).findFirst().get();
如果没有匹配的就会报错
Exception in thread "main" java.util.NoSuchElementException: No value present
at java.util.Optional.get(Optional.java:135)
推荐使用下面的方法
T t = list.stream.filter(m->m.getStr().equals("张三")).findFirst().orElse(null);
6.获取List中金额最大值 bigDecimals类型
BigDecimal maxBig = Arrays.stream(bigDecimals).max(BigDecimal::compareTo).get()
7.打印
Arrays.stream(strings).forEach(System.out::println)
8.排序
List<T> sortList = list.stream().sorted(Comparator.comparing(T::getAge))
//方法二
List<T> sortList = Arrays.asList(strings).stream().mapToInt(Integer::parseInt).toArray();
9.查询List所有匹配数据
List<T> list = list.stream().filter(b->b.getStr().equals("张三")).collect(
Collectors.joining()).trim()
10.合计 bigDecimals类型也可以使用
double sum= dto.stream().mapToDouble((x)->x.getMoney().doubleValue()).sum()
11.交集
List<String> intersection = list1.stream().filter(item -> list2.contains(item)).collect(toList());
System.out.println("---交集 intersection---");
intersection.parallelStream().forEach(System.out :: println);
12.差集
// (list2 - list1)
List<String> reduce2 = list2.stream().filter(item -> !list1.contains(item)).collect(toList());
System.out.println("---差集 reduce2 (list2 - list1)---");
reduce2.parallelStream().forEach(System.out :: println);
13.并集
List<String> listAll = list1.parallelStream().collect(toList());
List<String> listAll2 = list2.parallelStream().collect(toList());
listAll.addAll(listAll2);
System.out.println("---并集 listAll---");
listAll.parallelStream().forEachOrdered(System.out :: println);
14.去重并集
List<String> listAllDistinct = listAll.stream().distinct().collect(toList());
System.out.println("---得到去重并集 listAllDistinct---");
listAllDistinct.parallelStream().forEachOrdered(System.out :: println);
15.获取重复KEY
List<String> collect = saveList.parallelStream().collect(Collectors.toMap(e -> e.getDevice().getDeviceNo(), e -> 1, Integer::sum)).entrySet().stream().filter(entry -> entry.getValue() > 1).map(Map.Entry::getKey).collect(Collectors.toList());