Java8 stream用法 ~ 实战,不理论

前言

小 白 可 以 看 看 , 老 手 请 移 步 \color{blue}小白可以看看,老手请移步
之 前 用 j d k 7 , 现 在 切 换 到 j d k 8 , 记 录 本 人 使 用 的 一 些 案 例 , 仅 此 而 已 \color{blue}之前用jdk7,现在切换到jdk8,记录本人使用的一些案例,仅此而已 jdk7jdk8使

初始化数据

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String username;
    private String password;
    private Integer age;
    private boolean deleted;

    public static List<User> getUserList() {
        User user = new User("张三", "123456", 20, false);
        User user1 = new User("李四", "123456", 24, false);
        User user2 = new User("王五", "123456", 25, false);
        User user3 = new User("小六", "123456", 26, true);
        User user4 = new User();
        return  Lists.newArrayList( user, user1, user2, user4, user3 );
    }

}

收集 实体User某个字段

@Test
    public void collectEntityAttribute() {
        List<User> users = User.getUserList();
        // 收集 用户名属性
        List<String> collect = users.stream().map(User::getUsername).collect(Collectors.toList());
        collect.stream().forEach(System.out::println);
    }

过滤

  @Test
    public void filterAndCollectEntityAttribute() {
        List<User> users = User.getUserList();
        // 收集 用户名属性
        List<String> collect = users.stream().map(User::getUsername).filter(StringUtils::isNotBlank).collect(Collectors.toList());
        collect.stream().forEach(System.out::println);
        // 或者
        System.out.println("=========");
        List<String> collect1 = users.stream().filter(StreamTest::entityIsNotNull).map(User::getUsername).collect(Collectors.toList());
        collect1.stream().forEach(System.out::println);
    }

    public static boolean entityIsNotNull(User u) {
        if (StringUtils.isNotBlank(u.getUsername())) {
            return true;
        }
        return false;
    }

案例2

 @Test
    public void filterAndCollectEntityAttribute2() {
        List<User> users = User.getUserList();
        // 收集
        List<String> collect1 = users.stream().filter(
                user -> StringUtils.isNotBlank(user.getUsername()) && user.getAge() >= 25)
                .map(User::getUsername).collect(Collectors.toList());
        collect1.stream().forEach(System.out::println);
    }

在这里插入图片描述

转化数据类型

将password 从string类型转化成 int类型

 @Test
    public void typeTrans() {
        List<User> users = User.getUserList();
        // 收集
        List<Long> collect1 = users.stream().filter(StreamTest::entityIsNotNull).map(User::getPassword)
                .map(Long::valueOf).collect(Collectors.toList());
        collect1.stream().forEach(System.out::println);
    }

分组


    @Test
    public void testGroupBy() {
        List<User> users = User.getUserList();
        Map<Integer, List<User>> collect = users.stream().filter(StreamTest::entityIsNotNull)
                .collect(Collectors.groupingBy(User::getAge));
        System.out.println(1);
    }

在这里插入图片描述

小总结

知 道 的 越 多 , 不 知 道 的 越 多 , 希 望 对 你 有 帮 助 ! 连 更 中 \color{red}知道的越多,不知道的越多,希望对你有帮助!连更中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值