zoukankan      html  css  js  c++  java
  • Lambda常用写法

    1、排序

    import lombok.Data;
    import java.util.*;
    import java.util.stream.Collectors;
    
    public class StreamStudy {
    
        public static void main(String[] args) {
            User u1 = new User("陈一",32);
            User u2 = new User("陈二",23);
            User u3 = new User("陈三",33);
            List<User> users = new ArrayList<>();
            users.add(u1);
            users.add(u2);
            users.add(u3);
            List<User> collect1 = users.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
            System.out.println(collect1);
            List<User> collect2 = users.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());
            System.out.println(collect2);
        }
    }
    
    @Data
    class User {
        public User() {}
        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }
        String name;
        int age;
    }

     2、集合操作

    import lombok.Data;
    import java.util.*;
    import java.util.stream.Collectors;
    
    public class StreamStudy {
    
        public static void main(String[] args) {
            User user1 = new User(5, "aa");
            User user2 = new User(2, "ba");
            User user3 = new User(3, "ac");
            User user4 = new User(1, "aad");
            User user5 = new User(4, "asd");
            List<User> userList = Arrays.asList(user1, user2, user3, user4, user5);
    
            //获取所有ID集合
            List<Integer> idList = userList.stream().map(User::getId).collect(Collectors.toList());
            System.out.println(idList);
    
            //根据ID排序
            List<User> userList1 = userList.stream().sorted(Comparator.comparingInt(User::getId)).collect(Collectors.toList());
            System.out.println(userList1);
    
            //分组
            Map<String, Long> map = userList.stream().collect(Collectors.groupingBy(User::getName, Collectors.counting()));
            System.out.println(map);
    
            //获取id大于2的
            List<User> userList2 = userList.stream().filter(user -> user.getId() > 2).collect(Collectors.toList());
            System.out.println(userList2);
    
            //获取最大
            Integer id = userList.stream().map(User::getId).max(Integer::compareTo).get();
            System.out.println(id);
    
            //获取最小
            Integer id1 = userList.stream().map(User::getId).min(Integer::compareTo).get();
            System.out.println(id1);
    
            //获取数量
            Long id3 = userList.stream().count();
            System.out.println(id3);
    
            //求和
            int sum = userList.stream().mapToInt(User::getId).sum();
            System.out.println(sum);
    
            //获取平均值
            double avg = userList.stream().mapToInt(User::getId).average().getAsDouble();
            System.out.println(avg);
    
            //如果存在获取任意一个对象
            User user = userList.stream().filter(us -> us.getId() > 2).findAny().get();
            System.out.println(user);
    
            //获取第一个对象
            User userFirst = userList.stream().findFirst().get();
            System.out.println(userFirst);
    
            //将名字全转换为大写
            List<String> upName = userList.stream().map(User::getName).map(String::toUpperCase).collect(Collectors.toList());
            System.out.println(upName);
    
            //获取忽略第一个并取前几条数据
            List<User> users = userList.stream().skip(1).limit(2).collect(Collectors.toList());
            System.out.println(users);
    
            //去重
            List<User> userDis = userList.stream().distinct().collect(Collectors.toList());
            System.out.println(userDis);
        }
    }
    
    @Data
    class User {
    
        public User(){}
        public User(int id, String name){
            this.id = id;
            this.name = name;
        }
    
        int id;
        String name;
    }

     3、并行流

    将List转为Map

    Map<Long, DeviceOnlineDto> onlinemap = onlinelist.parallelStream().collect(Collectors.toMap(DeviceOnlineDto::getDeviceid, e -> e));
        
  • 相关阅读:
    自定义滚动条原理
    多个轮播图或者选项卡显示在一个页面是,使用代码重用
    浮动与清除
    cni 添加网络 流程分析
    《MapReduce: Simplified Data Processing on Large Cluster 》翻译
    OpenStack overview 笔记
    docker containerd shim分析
    docker containerd 中的create 容器操作
    MIT jos 6.828 Fall 2014 训练记录(lab 6)
    docker containerd中的容器操作
  • 原文地址:https://www.cnblogs.com/xiaofengfree/p/12785724.html
Copyright © 2011-2022 走看看