Stream 操作集合 java8

版权声明:望支持~~~ https://blog.csdn.net/u011663149/article/details/86743930

前言:java8提供了很多操作集合的,以下是写的一些简单的案例。希望能有用 (* ̄︶ ̄)。

一些高级的操作后续进行更新。。。

/**
 * @author DHing
 */
public class Streams {
    
    static class User{
        private String name;
        private Integer age;
        
        public String getName() {
            return name;
        }
      
        public void setName(String name) {
            this.name = name;
        }
        
        public Integer getAge() {
            return age;
        }
         
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    
    public static void main(String[] args) {
        
        List<User> user = new ArrayList<>();
        User u = new User();
        u.setAge(1);
        u.setName("hello");
        user.add(u);
        
        user.forEach(u1 -> {
            System.out.println(u1.getAge() + " " + u1.getName());
        });
        
        //匹配名字为hello的对象集合
          List<User> collect = user.stream().filter(a -> "hello".equals(a.getName())) .collect(Collectors.toList()); //没有去重
          List<User> collect3 = user.stream().filter(a -> "hello".equals(a.getName())).distinct().collect(Collectors.toList()); //去重
        //limit
         List<User> collect2 = user.stream().limit(2).collect(Collectors.toList());
        System.out.println(collect2);
        //求年龄总和
        user.stream().map(a -> a.getAge()).reduce(0, Integer::sum);
        //等同上面 求和
         user.stream().mapToInt(User :: getAge).sum();
         //平均
         user.stream().mapToInt(User :: getAge).average();
         //最小
         user.stream().mapToInt(User :: getAge).min();
         //最大
         user.stream().mapToInt(User :: getAge).max();
         //年龄 乘 10
         user.stream().mapToDouble(w -> w.getAge() * 10).sum();
         //排序
         user.stream().sorted((s1, s2) -> s1.getAge().compareTo(s2.getAge())).collect(Collectors.toList());
         //分组
         user.stream().collect(Collectors.groupingBy(User::getAge));
         //取指定字段为一个新的集合
         user.stream().map(us -> {
             User u1 = new User();
             u1.setAge(us.getAge() + 10);
             return u1;
         }).collect(Collectors.toList());
         //同理转为一个map集合
         user.stream().map(us -> {
             Map u1 = new HashMap();
             u1.put("age", us.getAge());
             u1.put("name", us.getName());
             return u1;
         }).collect(Collectors.toList());
         
    }
}

      ~之前的博客服务器到期,望支持~


猜你喜欢

转载自blog.csdn.net/u011663149/article/details/86743930