工作中应用到的流操作记录
本博客记录博主在工作中使用到的stream流操作,便于大家学习。如有不正确的地方,请留言指正。
测试类
public class User {
private int id;
private String name;
private String sex;
private List friend; //存放 friend 属性id,朋友可以有多个
。。。。省略构造方法,ToString ,get/set
}
1.集合对象遍历操作
List<User> users = new ArrayList<>();
User user1 = new User(1,"user1","n");
User user2 = new User(2,"user2","s");
User user3 = new User(3,"user3","a");
User user4 = new User(4,"user4","b");
users.add(user1);
users.add(user2);
users.add(user3);
users.add(user4);
users.stream().forEach(user -> {
System.out.println(user.toString());
});
2.获取集合对象中id属性集合
List<String> collect = users.stream().map(User::getName).collect(Collectors.toList());
3.将user关联属性friend填充
public class Friend {
private int userId;
private int fiendId;
}
List<Friend> friends = new ArrayList<>();
Friend friend1 = new Friend(1,1001); // 用户id为1,拥有朋友 1001,1002,1003....
Friend friend2 = new Friend(1,1002); // 使用流操作,将属性填充至 user 中
Friend friend3 = new Friend(1,1003);
Friend friend4 = new Friend(1,1004);
Friend friend5 = new Friend(1,1005);
Friend friend6 = new Friend(2,2001);
Friend friend7 = new Friend(2,2002);
Friend friend8 = new Friend(2,3003);
Friend friend9 = new Friend(4,4004);
Friend friend10 = new Friend(4,4005);
friends.add(friend1);
friends.add(friend2);
friends.add(friend3);
friends.add(friend4);
friends.add(friend5);
friends.add(friend6);
friends.add(friend7);
friends.add(friend8);
friends.add(friend9);
friends.add(friend10);
// 遍历 users 填充 friend
users.stream().forEach(user -> {
// 流操作所有的 userFriends
List<Friend> userFriends = friends.stream()
.filter(friend -> friend.getUserId() == user.getId()) //根据本userid过滤friend
.collect(Collectors.toList()); //返回过滤后的集合
List<Integer> friendId = userFriends.stream()
.map(Friend::getFiendId)
.collect(Collectors.toList()); //获取userFriends集合中所以id集合
user.setFriend(friendId);
});
返回结果如下图:
user = User{id=1, name='user1', sex='n', friend=[1001, 1002, 1003, 1004, 1005]}
user = User{id=2, name='user2', sex='s', friend=[2001, 2002, 3003]}
user = User{id=3, name='user3', sex='a', friend=[]}
user = User{id=4, name='user4', sex='b', friend=[4004, 4005]}