java8 stream()的用法

Stream.map()映射

        List<User> userList = getUserList();
        List<UserVO> userVOList = userList.stream().map(user -> {     
            UserVO userVO = new UserVO();     
            userVO.setUserId(user.getUserId());     // 省略set方法     
            return userVO;
        }).collect(Collectors.toList());
  • .stream()将一个集合转换为Stream流
  • .collect()用于结果的收集
  • Collectors 收集器将流转换成集合和聚合元素

Stream.filter()

比如需要获取集合中userId为奇数的集合:

List<User> userList = getUserList();
userList.stream()
    .filter(user -> user.getUserId() % 2 == 1)
    .forEach(user -> System.out.println("userId=" + user.getUserId()));

// 控制台输出
// userId=1
// userId=3

Stream.sorted()

private static List<User> getUserList() {
    return Arrays.asList(new User().setUserId(1), 
             new User().setUserId(3), 
             new User().setUserId(2));
}

public static void main(String[] args) {
    // User没有实现Comparable接口
    List<User> userList = getUserList();
    userList.stream()
        // Exception in thread "main" java.lang.ClassCastException: 
        // User cannot be cast to java.lang.Comparable
        .sorted()
        .forEach(user -> System.out.println("userId=" + user.getUserId()));
}

public static void main(String[] args) {
    List<User> userList = getUserList();
    userList.stream()
        .sorted((u1, u2) -> u2.getUserId() - u1.getUserId())
        .forEach(user -> System.out.println("userId=" + user.getUserId()));
}

// 控制台输出
// userId=3
// userId=2
// userId=1

把一个list转换成以dto.getType()为key,List<MyDTO>为value的数据 

Map<Integer, List<MyDTO>> collect = list.stream().collect(
                Collectors.groupingBy(
                        dto -> dto.getType()
                )
        );


作者:读钓
链接:https://juejin.cn/post/6844904180188971022
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值