• Lambda 表达式应用


    java中对集合的遍历可以分为三种:(1)for 遍历 (2)foreach遍历 (3)iterator 遍历      例如:

         List<User> userList = new ArrayList<>();
            userList.add(new User(1, "鲁班", 7));
            userList.add(new User(2, "公孙离", 8));
            userList.add(new User(3, "马可波罗", 9));
            userList.add(new User(4, "百里守约", 10));
            userList.add(new User(5, "上官婉儿", 10));
    
            for (int i = 0; i < userList.size(); i++) {
                System.out.println("for循环遍历输出: " + userList.get(i));
            }
            for (User user : userList) {
                System.out.println("foreach遍历输出: " + user);
            }
            for (Iterator it = userList.iterator(); it.hasNext(); ) {
                System.out.println("iterator遍历输出: " + it.next());
            }

    利用java8 中的lambda 表达式可以快速实现对集合的整合处理:
    1:遍历输出userlist :

    userList.forEach(user -> {
                System.out.println("lambda forEach输出: " + user);
            });

    2:获取userList 中用户年龄的列表ageList

    List<Integer> ageList = userList.stream().map(User::getAge).collect(Collectors.toList());

    3:对ageList 去重 distinct

     List<Integer> ageList1 = ageList.stream().distinct().collect(Collectors.toList());

    4: 根据条件过滤列表

     List<User> userListFilter = userList.stream().filter(user -> !user.getName().equals("鲁班")).collect(Collectors.toList());

    5:求和sum

     int totalAge = userList.stream().mapToInt(User::getAge).sum();

    6:正排序

    List<User> sortUsers = userList.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());

    7:逆排序

    List<User> sortUsers1 = userList.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());

    8:对象列表去重

    List<User> userList1 = userList.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(comparingLong(User::getAge))), ArrayList::new));

    9:两个List 对象过滤

    List<User> userList2 = userList.stream()
                    .filter(user -> userList1.stream().noneMatch(user1 -> Objects.equals(user.getId(), user1.getId())))
                    .collect(Collectors.toList());

    源码测试内容:

    @Data
    @AllArgsConstructor
    public class User {
    
        private int id;
        private String name;
        private int age;
    }
    import java.util.*;
    import java.util.stream.Collectors;
    
    import static java.util.Comparator.comparingLong;
    import static java.util.stream.Collectors.collectingAndThen;
    import static java.util.stream.Collectors.toCollection;
    
    /**
     * @author wanglong
     * @since 2021/3/28 12:58
     */
    public class LambdaDemo {
    
    
        public static void main(String[] args) {
            /*List<User> userList = new ArrayList<User>() {
                {
                    add(new User(1, "鲁班", 7));
                    add(new User(2, "公孙离", 8));
                    add(new User(3, "马可波罗", 9));
                    add(new User(4, "百里守约", 10));
                }
            };*/
            List<User> userList = new ArrayList<>();
            userList.add(new User(1, "鲁班", 7));
            userList.add(new User(2, "公孙离", 8));
            userList.add(new User(3, "马可波罗", 9));
            userList.add(new User(4, "百里守约", 10));
            userList.add(new User(5, "上官婉儿", 10));
    
            for (int i = 0; i < userList.size(); i++) {
                System.out.println("for循环遍历输出: " + userList.get(i));
            }
            for (User user : userList) {
                System.out.println("foreach遍历输出: " + user);
            }
            for (Iterator it = userList.iterator(); it.hasNext(); ) {
                System.out.println("iterator遍历输出: " + it.next());
            }
    
            userList.forEach(user -> {
                System.out.println("lambda forEach输出: " + user);
            });
    
            //输出 ageList
            List<Integer> ageList = userList.stream().map(User::getAge).collect(Collectors.toList());
            System.out.println("ageList: " + ageList);
    
            //过滤ageList distinct
            List<Integer> ageList1 = ageList.stream().distinct().collect(Collectors.toList());
            System.out.println("ageList1: " + ageList1);
    
            //filter 过滤列表
            List<User> userListFilter = userList.stream().filter(user -> !user.getName().equals("鲁班")).collect(Collectors.toList());
            System.out.println("userListFilter: " + userListFilter);
    
            //求和 sum
            int totalAge = userList.stream().mapToInt(User::getAge).sum();
            System.out.println("年龄总和:" + totalAge);
    
            //正排序
            List<User> sortUsers = userList.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
            System.out.println("按年龄正排序:" + sortUsers);
    
            //逆排序
            List<User> sortUsers1 = userList.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());
            System.out.println("按年龄逆排序:" + sortUsers1);
    
            //list 对象去重
            List<User> userList1 = userList.stream()
                    .collect(collectingAndThen(toCollection(() -> new TreeSet<>(comparingLong(User::getAge))), ArrayList::new));
            System.out.println("list对象去重: " + userList1);
    
            //list对象过滤
            List<User> userList2 = userList.stream()
                    .filter(user -> userList1.stream().noneMatch(user1 -> Objects.equals(user.getId(), user1.getId())))
                    .collect(Collectors.toList());
            System.out.println("list 对象过滤:" + userList2);
    
    
        }
    }
  • 相关阅读:
    docker容器中查看容器linux版本
    mac 安装docker
    音视频流处理
    激光雷达
    sick 激光
    Ubuntu 14.04 安装Docker
    W: GPG error: http://ppa.launchpad.net trusty InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 8CF63AD3F06FC659
    rtp发送 h265
    pytorch 环境搭建
    Linux 修改文件夹的用户组权限
  • 原文地址:https://www.cnblogs.com/wlong-blog/p/14588695.html
Copyright © 2020-2023  润新知