数据结构和数据准备

@Data
@AllArgsConstructor
@NoArgsConstructor
static class StreamItem {
Integer id;
String name;
Boolean sex;
} List<StreamItem> list = Lists.newArrayList(new StreamItem(1, "a", true), new StreamItem(2, "b", false),
new StreamItem(3, "c", true), new StreamItem(1, "d", false), new StreamItem(4, "e", true));

map

List<String> list2 = list.stream().map(StreamItem::getName).collect(Collectors.toList());
System.out.println(list2); [a, b, c, d, e]

groupingBy

Map<Integer, List<StreamItem>> list2 = list.stream().collect(Collectors.groupingBy(StreamItem::getId));
System.out.println(list2); {1=[StreamStudy.StreamItem(id=1, name=a, sex=true), StreamStudy.StreamItem(id=1, name=d, sex=false)], 2=[StreamStudy.StreamItem(id=2, name=b, sex=false)],
3=[StreamStudy.StreamItem(id=3, name=c, sex=true)], 4=[StreamStudy.StreamItem(id=4, name=e, sex=true)]}

toMap

Map<Integer, String> list2 = list.stream().collect(Collectors.toMap(StreamItem::getId, StreamItem::getName, (k1, k2) -> k2));
System.out.println(list2); {1=d, 2=b, 3=c, 4=e}

filter

List<StreamItem> list2 = list.stream().filter(StreamItem::getSex).collect(Collectors.toList());
System.out.println(list2); [StreamStudy.StreamItem(id=1, name=a, sex=true), StreamStudy.StreamItem(id=3, name=c, sex=true), StreamStudy.StreamItem(id=4, name=e, sex=true)]

sum

int sum = list.stream().mapToInt(StreamItem::getId).sum();
System.out.println(sum); sum = list.stream().map(StreamItem::getId).reduce(Integer::sum).get();
System.out.println(sum); sum = list.stream().map(StreamItem::getId).reduce(0, Integer::sum);
System.out.println(sum); BigDecimal bigDecimal = list.stream()
.map(streamItem -> new BigDecimal(streamItem.getId()))
.reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println(bigDecimal); 11
11
11
11

参考

使用Stream快速对List进行一些操作

Java8之Consumer、Supplier、Predicate和Function攻略

最新文章

  1. 我的bootstrapTable的应用
  2. C++11特性:decltype关键字
  3. django的安装和搭建
  4. R(三): R包原理及安装
  5. 一个int 数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。
  6. 统计知识选讲(二)——主成分分析(PCA)的推导和应用
  7. [Linux] PHP程序员玩转Linux系列-升级PHP到PHP7
  8. 原生ajax封装,数据初始化,
  9. C/S 和B/S 详解 --- 2017-04-25
  10. C#设计模式之二工厂方法模式(Factory Method Pattern)【创建型】
  11. python初识,变量,条件判断语句,基本数据类型,while循环语句
  12. Leanote 蚂蚁笔记 云笔记
  13. SQL Server 端口号的使用
  14. Servlet基本_Httpリクエスト、レスポンス
  15. WPF命令(Command)介绍、命令和数据绑定集成应用
  16. 面试问题总结二(技术能力-PHP)----Ⅱ
  17. petri网初步
  18. xp看系统位数
  19. sofar:机器学习检测十题
  20. 百度地图js小结

热门文章

  1. linux 字符驱动框架(用户态的read,write,poll是怎么操作驱动的)
  2. python测试http、websocket接口
  3. VirtualBox中安装的CentOS开启SSH并设置访问外网
  4. Dockerfile构建镜像实战
  5. DVWA sql注入low级别
  6. mysql 事务、隔离级别
  7. dubbo学习(十)spring boot整合dubbo
  8. [LCTF]bestphp&#39;s revenge 给我的启发学习
  9. sipp3.6对freeswitch进行压力测试
  10. Python字符编码和二进制不得不说的故事