强大的Stream流你在使用吗?带你初步认识它

@Data
@AllArgsConstructor
public class User {
   private String name;
   private Integer age;
   private Integer salary;
}

首先,我们自定义一个User实例类,为我们的List数据源做准备。

1.filter常用的方法:用来过滤条件,比以往的foreach循环每次指定一个条件效率高很多,代码量大量减少,逻辑清晰。

2.collect常用方法:用来得到生成一个新的集合。

public static void main(String[] args) {
        //定义一个list,放入user对象参数
        List<User> list= Arrays.asList(
                new User("张三",26,11000),
                new User("李四",23,9800),
                new User("小六",24,300000),
                new User("小王",32,13000)
        );
        //Predicate 为我们提供的限制条件的方法 使用Lambda表达式限定条件
        Predicate<User> predicate1= User -> User.getAge()<25;
        Predicate<User> predicate2= User -> User.getSalary()>12000;
        //使用Stream流进行数据输出 
        List<User> collect=list.stream()
                .filter(predicate1.or(predicate2))//filter方法用来限定条件过滤(or 两个条件or的关系)
                //.filter(predicate1.and(predicate2)) and是两个条件且的关系
                //.filter(User -> User.getAge()<25) 也可以直接用这种方式进行条件限制
                .collect(Collectors.toList()); //collect方法根据上面过滤后的条件生成新的集合
        System.out.println(collect.toString());

3.forEach常用方法:可以循环输出集合内的符合限制条件的元素,更快的遍历方法。

4.limit常用方法:类似于sql中的limit,限制得到的集合中的元素个数。

 //定义一个字符串泛型的集合list1
       List<String> list1=Arrays.asList("HELLO","WORLD","LISA","AA");
        list1.stream()
                //使用lambda表达式 自定义对象名str 过滤字符串长度小于等于4的元素
                .filter(str ->str.length()>4)
                //循环输出过滤后得到的字符串
                .forEach(str -> System.out.println(str));
        list1.stream()
                //limit方法类似于sql里面的limit 最大得到的元素数量 此处的2表示得到前两个元素
                .limit(2)
                //循环得到结果
                .forEach(str -> System.out.println(str));

5.sorted常用方法:排序,默认按照升序进行排列,使用Comparator.reverseOrder()可以进行降序排列。

6.max常用方法:找出集合中最大的元素。

6.min常用方法:找出集合中最小的元素。

7.get常用方法:得到该元素的方法。

 List<Integer> integerList=Arrays.asList(1,7,9,5,6,12,77);//定义一个泛型为Interger的集合list
        integerList.stream()
                 //sorte排序默认为升序排列 参数内为Comparator.reverseOrder()时为降序排列
                .sorted(Comparator.reverseOrder())
                .forEach(num -> System.out.println(num));
        //max方法找出集合中最大的元素  get方法得到这个元素
        System.out.println(integerList.stream().max(Integer::compareTo).get());
        //min方法找出集合中最小的元素  get方法得到这个元素
        System.out.println(integerList.stream().min(Integer::compareTo).get());
        //count方法得到集合的长度 
        System.out.println(integerList.stream().count()); 

8.map常用方法:map方法可以对集合中的单个元素进行统一处理。

9.reduce常用方法:reduce方法也可以对集合中元素进行统一处理 不同的是 可以得到的是一个累积的值。

         //map
         integerList.stream()
                 //map方法可以对集合中的单个元素进行统一处理 例如:每个元素加10
                .map(num -> num+10)
                 .forEach(num -> System.out.println(num));


         //reduce
        System.out.println(integerList.stream()
                //reduce方法也可以对集合中元素进行统一处理 不同的是 可以得到的是一个累积的值 例如:每个元素加10,最终得到所有元素相加的和
                .reduce((sum,num) -> sum+num)
                .get());


        //collection
        List<Integer> newlist=integerList.stream()
                .filter(num -> num%2==0)
                .collect(Collectors.toList());
        System.out.println(newlist);

上述就是stream流的一些简单方法使用案例,欢迎大家在评论区补充,谢谢。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值