1.查找集合中的第一个对象
Optional<Object> first= ObjectList.stream() .filter(a -> "hanmeimei".equals(a.getUserName())) .findFirst();
2.返回符合查询条件的集合
//所有名字叫hanmeimei的集合
List<Object> firstObject= ObjectList.stream() .filter(a -> "hanmeimei".equals(a.getUserName())) .collect(Collectors.toList());
//所有名字为空的集合
List<Object> firstObject= ObjectList.stream() .filter(a -> StringUtils.isEmpty(a.getUserName())) .collect(Collectors.toList());
3. filter 过滤
private List<Integer> integers = Lists.list(30, 40, 10, 20);
Set<Integer> collect = integers.stream()
.filter(i -> i > 20).collect(Collectors.toSet());
assertEquals(Sets.newTreeSet(30, 40), collect);
4. map 对每个元素执行操作,不会改变原本数量
private List<Integer> integers = Lists.list(30, 40, 10, 20);
List<String> collect = integers.stream().map(i -> i + "哈哈").collect(Collectors.toList());
assertEquals(Lists.list("30哈哈", "40哈哈", "10哈哈", "20哈哈"), collect);
5. distinct 去重
List<Integer> integers = Lists.list(30, 40, 10, 20, 20, 10, 50, 20);
List<Integer> collect = integers.stream().distinct().collect(Collectors.toList());
System.out.println(collect);//[30, 40, 10, 20, 50]
6.sorted 排序
collect = integers.stream().sorted().collect(Collectors.toList());
System.out.println(collect);// [10, 10, 20, 20, 20, 30, 40, 50]
collect = integers.stream().sorted((x, y) -> {//这里认为40 不吉利 自定义排到最后
if (y == 40) {
return -1; // 注意 排序比较时 结果 1排在前,-1排在后
}else if (x==40){
return 1;
}
return x.compareTo(y);
}).collect(Collectors.toList());
System.out.println(collect);// [10, 10, 20, 20, 20, 30, 50, 40]
7. limit 限定流元素数量
List<Integer> integers = Lists.list(30, 40, 10, 20, 20, 10, 50, 20);
List<Integer> collect = integers.stream().limit(3).collect(Collectors.toList());
System.out.println(collect); // [30, 40, 10]
8. skip 跳过多少个元素
List<Integer> q = Lists.list(30, 40, 10, 20, 20, 10, 50, 20);
List<Integer> collect5 = q.stream().skip(2).collect(Collectors.toList());
System.out.println(collect5); // [10, 20, 20, 10, 50, 20]
9. min 最小 count总数
List<Integer> integers = Lists.list(30, 40, 10, 20, 20, 10, 50, 20);
Integer integer1 = integers.stream().min(Integer::compareTo).orElse(-1);
System.out.println(integer1); //10 long count = integers.stream().count();
System.out.println(count);//8
10.findFirst 第一个 findAny 随便一个
List<Integer> integers = Lists.list(30, 40, 10, 20, 20, 10, 50, 20);
Integer integer2 = integers.stream().findFirst().orElse(-1);
Integer integer3 = integers.stream().findAny().orElse(-1);
11.collect 收集
List<Integer> integers = Lists.list(30, 40, 10, 20, 20, 10, 50, 20);
ArrayList<Object> collect1 = integers.stream()
.collect(ArrayList::new, ArrayList::add, ArrayList::add);
// 在combiner使用时,你的Stream是平行的,因为在这种情况下,
// 多个线程收集的元素Stream到最终输出的子列表ArrayList,
// 并且这些子列表必须被组合以产生最终的ArrayList。
System.out.println(collect1);// [30, 40, 10, 20, 20, 10, 50, 20]
12.使用collect将stream转化为list
List<String> result1 = lines.stream() // convert list to stream
.filter(line -> !"mkyong".equals(line)) // filter the line which equals to "mkyong"
.collect(Collectors.toList()); // collect the output and convert streams to a list
result1.forEach(System.out::println); // o
13.两个集合中的差集
//计算两个list中的差集
List<String> reduce1 = allList.stream()
.filter(item -> !wList.contains(item)).collect(Collectors.toList());
stream常用方法及案例
最新推荐文章于 2024-07-03 19:13:37 发布