Java1.8 Stream流相关使用记录

工作中应用到的流操作记录

本博客记录博主在工作中使用到的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]}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值