- stream
根据type分组
List vos
Map> map = vos.stream().collect(
Collectors.groupingBy(item -> item.getType)
)
分区
System.out.println("通过年龄进行分区排序:");
Map> children = Stream.generate(new UserSupplier3()).limit(5)
.collect(Collectors.partitioningBy(p -> p.getId() < 18));
System.out.println("children: " + children.get(true));
System.out.println("person: " + children.get(false));
获取某字段求和
double sum = list.stream().mapToDouble(VO::getNum).sum();
mapToDouble() 可以根据需要替换相应的方法
根据具体的值匹配分类
List vos = list.stream().filter(item -> "A".equalse(item.getType())).collect(Collectors.toList());
filter中可以多条件,支持与或非 *** 作运算符
普通的排序取值
List list = list.stream().sorted((u1, u2) -> u1.getName().compareTo(u2.getName())).limit(3)
.collect(Collectors.toList());
System.out.println("排序之后的数据:" + list);
优化排序取值
List list = list.stream().limit(3).sorted((u1, u2) -> u1.getName().compareTo(u2.getName()))
.collect(Collectors.toList());
System.out.println("优化排序之后的数据:" + list);
最大最小
List list = Arrays.asList("zhangsan","lisi","wangwu","xuwujing");
int maxLines = list.stream().mapToInt(String::length).max().getAsInt(); int minLines = list.stream().mapToInt(String::length).min().getAsInt();
System.out.println("最长长度:" + maxLines+",最短长度:"+minLines);
去重
String lines = "good good study day day up";
List list = new ArrayList();
list.add(lines);
List words = list.stream().flatMap(line -> Stream.of(line.split(" "))).filter(word -> word.length() > 0)
.map(String::toLowerCase).distinct().sorted().collect(Collectors.toList());
System.out.println("去重复之后:" + words);
是否匹配
--allMatch:Stream 中全部元素符合则返回 true ;
--anyMatch:Stream 中只要有一个元素符合则返回 true;
--noneMatch:Stream 中没有一个元素符合则返回 true。
boolean all = lists.stream().allMatch(u -> u.getId() > 2);
System.out.println("是否都大于2:" + all);
boolean any = lists.stream().anyMatch(u -> u.getId() > 2);
System.out.println("是否有一个大于2:" + any);
boolean none = lists.stream().noneMatch(u -> u.getId() > 2);
System.out.println("是否没有一个大于2的:" + none);
字符串拼接
String concat = Stream.of("A", "B", "C", "D").reduce("", String::concat);
System.out.println("字符串:" + concat);
最大最小平均数
List numbers = Arrays.asList(2, 6, 7, 4, 12);
IntSummaryStatistics stats = numbers.stream().mapToInt((x) -> x).summaryStatistics();
System.out.println("列表中最大的数 : " + stats.getMax());
System.out.println("列表中最小的数 : " + stats.getMin());
System.out.println("所有数之和 : " + stats.getSum());
System.out.println("平均数 : " + stats.getAverage());
转换大写
List list = Arrays.asList("zhangSan", "liSi", "wangWu");
System.out.println("转换之前的数据:" + list);
List list2 = list.stream().map(String::toUpperCase).collect(Collectors.toList());
System.out.println("转换之后的数据:" + list2);
TODO
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)