Java 8 Stream API:强大而灵活的数据处理流水线

Stream 中⽂称为 “流”,通过将集合转换为这么⼀种叫做 “流”的元素队列,通过声明性⽅式,能够对集合中的每个元素进⾏⼀系列并⾏或串⾏的流⽔线操作

元素是特定类型的对象,所以元素集合看作⼀种流, 流在管道中传输, 且可以在管道的节点上进⾏处理, ⽐如 排序,聚合,过滤等操作

操作详情

  • 数据元素便是原始集合,如list,set,map

  • 生成流,可以使串行流stream或者并行流parallelStream

  • 中间操作,可以使排序,聚合,过滤,转换等

  • 终端操作,很多流操作本身就会返回一个流,所以多个操作可以直接连接起来,最后统一进行收集

开发前数据准备

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
   
    private Long id;
    private String name;
    private Integer age;
}@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserDTO {
   
    private Long id;
    private String name;
    private Integer age;
}@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
   
    private Long id;
    private String name;
    private Integer age;
}@Data
@AllArgsConstructor
@NoArgsConstructor
public class VideoOrder {
   
    private String tradeNo;
    private String title;
    private int money;
}

Map操作

在日常开发中,对象转换是必不可少的,比如:mapper层实体类获取,到业务层转换为DTO,业务层到控制器AO等。

 public static void testMap(){
   
        List<User> list = Arrays.asList(
                new User(1L, "张三", 18),
                new User(2L, "李四", 20),
                new User(3L, "王五", 33),
                new User(4L, "赵六", 44));
        List<UserDTO> userDTOList = list.stream().map(obj -> {
   
            UserDTO userDTO = new UserDTO(obj.getId(), obj.getName(), obj.getAge());
            return userDTO;
        }).collect(Collectors.toList());
​
        userDTOList.forEach(System.out::println);
    }

filter条件过滤

有时候我们获取数据库的列表,有些数据不是我们想要的,这时候我们可以过滤掉不需要的数据。如下面示例过滤掉字符串长度大于7的字符串。

 public static void testFilter(){
   
        List<String> list = Arrays.asList(
               "SpringBoot",
               "SpringCloud",
               "Spring",
               "SpringMVC",
               "mybatis",
               "html",
                "git"
               );
        List<String> stringList = list.stream().filter(obj -> obj.length() > 7).collect(Collectors.toList());
        System.out.println(stringList);
    }

sorted排序

sorted对流进行自然排序,其中的元素需要实现comparable接口 sorted(Comparatorcomparator)用于自定义升降序

 public static void testSorted(){
   
        List<String> list = Arrays.asList(
                "SpringBoot",
                "SpringCloud",
                "Spring",
                "SpringMVC",
                "mybatis",
                &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

double_lifly

点喜欢就是最好的打赏!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值