JDK1.8

JDK1.8笔记

stream

根据type分组
List<VO> vos
Map<String, List<VO>> map = vos.stream().collect(
	Collectors.groupingBy(item -> item.getType)
)
分区
System.out.println("通过年龄进行分区排序:");
Map<Boolean, List<User>> 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<VO> vos = list.stream().filter(item -> "A".equalse(item.getType())).collect(Collectors.toList());
filter中可以多条件,支持与或非操作运算符
普通的排序取值
List<User> list = list.stream().sorted((u1, u2) -> u1.getName().compareTo(u2.getName())).limit(3)
   .collect(Collectors.toList());
System.out.println("排序之后的数据:" + list);
优化排序取值
List<User> list = list.stream().limit(3).sorted((u1, u2) -> u1.getName().compareTo(u2.getName()))
   .collect(Collectors.toList());
System.out.println("优化排序之后的数据:" + list);

最大最小
List<String> 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<String> list = new ArrayList<String>();
list.add(lines);
List<String> 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<Integer> 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<String> list = Arrays.asList("zhangSan", "liSi", "wangWu");
System.out.println("转换之前的数据:" + list);
List<String> list2 = list.stream().map(String::toUpperCase).collect(Collectors.toList());
System.out.println("转换之后的数据:" + list2); 

TODO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值