本文共 1210 字,大约阅读时间需要 4 分钟。
记录一下java8采用stream对集合的常用操作
User :{ id, name, age}
1.对象集合的分组(有两种形式)
示例:List userList,根据id分组,可以分组成为两种格式的map (1)Map<id,User>Mapmap = userList.stream().collect(Collectors.toMap(User::getId, Function.identity()));
(2)Map<id,List>
Map> = userList.stream().collect(Collectors.groupingBy(User::getId));
2.去重操作
对List 实现去重,distinct关键字示例:userList= userList.stream().distinct().collect(Collectors.toList());
3.stream的map
主要用于得到特定的结构 例如:List userList,我向得到User Id的集合ListidList = userList.stream.map(User::getId).collect(Collectors.toList());
4.stream的filter
主要用于数据的筛选。 例1:一个条件的筛选,删选id>5的UserListuserList = userList.stream.filter(i->i.getId()>5).collect(Collectors.toList());
例2:两个条件的删选用&&连接就行,删选id>5年纪>10的User
ListuserList = userList.stream.filter(i->i.getId()>5&&i.getAge()>10).collect(Collectors.toList());
5.用来作循环
userList.stream().forEach(user -> System.out.println("姓名:" + user.getName()));
当然也可以加个limit限制数量
userList.stream().limit(2).forEach(user -> System.out.println("姓名:" + user.getName()));
6.最大值最小值
int maxAge = userList.stream().mapToInt(User::getAge).max().getAsInt(); int minAge = userList.stream().mapToInt(User::getAge).min().getAsInt();
转载地址:http://zykti.baihongyu.com/