stream与lambda表达式的使用

遍历集合含有索引

private Map<String,String> findUserGroups(List<String> results){
        Map<String,String> map = Maps.newHashMap();
        Stream.iterate(0, i -> i + 1).limit(results.size())
                .filter(i -> results.get(i).contains("、"))
                .forEach(i ->
        map.put(String.valueOf(i),results.get(i))
  );
  return map;
}

常用操作

//rangeClosed包含末尾数据
long sum=LongStream.rangeClosed(1,10000000L).parallel().reduce(0,Long::sum);
System.out.println(sum);

//range不包含末尾节点
sum=LongStream.range(1,10000000L).parallel().reduce(0,Long::sum);
System.out.println(sum);

//求和reduce()
System.out.println(Stream.of(1,2,3,4).reduce((sum2,item)->{
      return sum2+item;
}).get());
System.out.println(Stream.of(1,2,3,4).reduce(Integer::sum).get());

//求最大值reduce()
System.out.println(Stream.of(1,2,3,4).reduce(100,(a,b)->Math.max(a, b)));
System.out.println(Stream.of(1,2,3,4).reduce(Integer::max).get());

//去重distinct()
System.out.println(Arrays.asList("a", "b", "c", "d", "a", "b", "c")
    .stream()
    .distinct()
    .collect(Collectors.toList())
);

//统计分组
System.out.println(Arrays.asList("apple", "apple", "banana",
    "apple", "orange", "banana", "papaya")
 .stream().collect(Collectors.groupingBy(Function.identity(),Collectors.counting()))
);

//统计排序
Map<String,Long> sortMap=new LinkedHashMap<>();
Arrays.asList("apple", "apple", "banana", "apple", "orange", "banana", "papaya")
    .stream()
.collect(Collectors.groupingBy(Function.identity(),Collectors.counting()))
.entrySet()
.stream()
.sorted(Map.Entry.<String, Long>comparingByValue().reversed())
.forEachOrdered(e->sortMap.put(e.getKey(),e.getValue()));
System.out.println(sortMap);

运行结果:
运行结果

对含有BigDecimal字段的对象集合求和

BigDecimal result2 = userList.stream()
//将user对象的age取出来map为Bigdecimal
.map(User::getAge)
//使用reduce()聚合函数,实现累加器
.reduce(BigDecimal.ZERO,BigDecimal::add);

对int、double类型求和

int ageSum = userList.stream().collect(Collectors.summingInt(User::getAge));
System.out.println("年龄总和" + ageSum);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 为什么有__slots__属性? 默认情况下,python对象队象的每个实例(instance)都会有一个字典来存...
    Nisen阅读 4,338评论 0 1
  • 给你,亲爱的你可拿去浪我欠你的太多太多 世界那么大你看了就不想回来我是知道的 那里有你喜欢的春江花朝秋月夜那里有你...
    杨乌那希阅读 1,558评论 0 0
  • 今晚元宵,老家闹元宵可热闹了,舞龙、放烟花等等,宝宝也看到了真正的舞龙,开心极了。于是,晚上玩的比较晚,所以只看了...
    嘟嘟嘀嘀阅读 1,472评论 0 0
  • 妈妈,妈妈 我是天上的一颗星星 在浩渺无垠的星空中 找了好久好久 才找到你 于是趁你夜里睡着的时候 悄悄地钻进了你...
    记搏阅读 3,926评论 1 9

友情链接更多精彩内容