初级JAVA在线撸码(Lambda)

87 阅读1分钟

平时很少这样写Lambda 看到大佬发的文章 自己手写了下,学习提升 原文地址在最后

public class User implements Serializable {
    private long id;
    private String username;
    private int gender;
    ...省略get/set...
}


public class TestLambda {

    public static void main(String[] args) {

        //list2Map();
        //doFilter();
        //doForeach();
        //doGroupingBy();
        //doSort();
        //doDistinct();
        //doFindFirst();
        //doAnyMatch();
        //doAllMatch();
        //doMap();
        //doReduce();
        //doPeek();
        //doMinMax();
        doCount();
    }

    private static void doCount() {
        List<User> userList = new ArrayList<>();
        User u1 = new User();
        u1.setName("A");
        u1.setId(1);
        u1.setGender(1);
        User u2 = new User();
        u2.setName("B");
        u2.setId(2);
        u2.setGender(0);
        User u3 = new User();
        u3.setName("C");
        u3.setId(3);
        u3.setGender(0);
        userList.add(u1);
        userList.add(u2);
        userList.add(u3);

        //主要统计元素数量
        System.out.println(userList.stream().count());

    }

    private static void doMinMax() {
        List<User> userList = new ArrayList<>();
        User u1 = new User();
        u1.setName("A");
        u1.setId(1);
        u1.setGender(1);
        User u2 = new User();
        u2.setName("B");
        u2.setId(2);
        u2.setGender(0);
        User u3 = new User();
        u3.setName("C");
        u3.setId(3);
        u3.setGender(0);
        userList.add(u1);
        userList.add(u2);
        userList.add(u3);

        userList.stream().max(Comparator.comparing(User::getId)).ifPresent(user -> System.out.println("max:"+JSON.toJSONString(user)));

        userList.stream().min(Comparator.comparing(User::getId)).ifPresent(user -> System.out.println("min:"+JSON.toJSONString(user)));
    }

    private static void doPeek() {

        List<User> userList = new ArrayList<>();
        User u1 = new User();
        u1.setName("A");
        u1.setId(1);
        u1.setGender(1);
        User u2 = new User();
        u2.setName("B");
        u2.setId(2);
        u2.setGender(0);
        User u3 = new User();
        u3.setName("C");
        u3.setId(3);
        u3.setGender(0);
        userList.add(u1);
        userList.add(u2);
        userList.add(u3);

        User resultUser = userList.stream().peek(user -> System.out.println(JSON.toJSONString(user))).reduce(new User(), (a, b) -> {
            b.setId(a.getId() + b.getId());
            return b;
        });

        System.out.println(JSON.toJSONString(resultUser));


    }

    private static void doReduce() {
        //对集合中的元素做特殊处理
        List<User> userList = new ArrayList<>();
        User u1 = new User();
        u1.setName("A");
        u1.setId(1);
        u1.setGender(1);
        User u2 = new User();
        u2.setName("B");
        u2.setId(2);
        u2.setGender(0);
        User u3 = new User();
        u3.setName("C");
        u3.setId(2);
        u3.setGender(0);
        userList.add(u1);
        userList.add(u2);
        userList.add(u3);

        User resultUser = userList.stream().reduce(new User(), (a, b) -> {
            b.setId(a.getId() + b.getId());
            return b;
        });

        System.out.println(JSON.toJSONString(resultUser));
    }

    private static void doMap() {
        //对集合中的元素做特殊处理
        List<User> userList = new ArrayList<>();
        User u1 = new User();
        u1.setName("A");
        u1.setId(1);
        u1.setGender(1);
        User u2 = new User();
        u2.setName("B");
        u2.setId(2);
        u2.setGender(0);
        User u3 = new User();
        u3.setName("C");
        u3.setId(2);
        u3.setGender(0);
        userList.add(u1);
        userList.add(u2);
        userList.add(u3);

        userList = userList.stream().map(user -> {
            user.setName(user.getName().toLowerCase());
            return user;
        }).collect(Collectors.toList());
        userList.forEach(user -> System.out.println(JSON.toJSONString(user)));
    }

    private static void doAllMatch() {
        //判断是否都是这个元素
        List<String> data = Arrays.asList("0","0");
        boolean containedElement = data.stream().allMatch(str-> str.equals("0"));
        System.out.println(containedElement);
    }

    private static void doAnyMatch() {
        //判断是否包含这个元素
        List<String> data = Arrays.asList("0","0","1","1","2","2");
        boolean containedElement = data.stream().anyMatch(str-> str.equals("0"));
        System.out.println(containedElement);
    }

    private static void doFindFirst() {
        //返回集合第一个元素
        List<String> data = Arrays.asList("0","0","1","1","2","2");
        data.stream().findFirst().ifPresent(System.out::println);
    }

    private static void doDistinct() {
        List<String> data = Arrays.asList("0","0","1","1","2","2");
        data = data.stream().distinct().collect(Collectors.toList());
        data.forEach(System.out::println);
    }

    private static void doSort() {
        List<User> userList = new ArrayList<>();
        User u1 = new User();
        u1.setName("A");
        u1.setId(1);
        u1.setGender(1);
        User u2 = new User();
        u2.setName("B");
        u2.setId(2);
        u2.setGender(0);
        User u3 = new User();
        u3.setName("C");
        u3.setId(2);
        u3.setGender(0);
        userList.add(u1);
        userList.add(u2);
        userList.add(u3);
        //升序
        userList = userList.stream().sorted(Comparator.comparing(User::getId)).collect(Collectors.toList());
        userList.forEach(user -> System.out.println(JSON.toJSONString(user)));
        //降序
        userList = userList.stream().sorted(Comparator.comparing(User::getId).reversed()).collect(Collectors.toList());
        userList.forEach(user -> System.out.println(JSON.toJSONString(user)));
    }

    private static void doGroupingBy() {
        List<User> userList = new ArrayList<>();
        User u1 = new User();
        u1.setName("A");
        u1.setId(1);
        u1.setGender(1);
        User u2 = new User();
        u2.setName("B");
        u2.setId(2);
        u2.setGender(0);
        User u3 = new User();
        u3.setName("C");
        u3.setId(2);
        u3.setGender(0);
        userList.add(u1);
        userList.add(u2);
        userList.add(u3);

        Map<Integer, List<User>> result =userList.stream().collect(Collectors.groupingBy(User::getGender));
        result.forEach((k,v) -> System.out.println(k+"--"+JSON.toJSONString(v)));
    }

    private static void doForeach() {

        List<User> userList = new ArrayList<>();
        User u1 = new User();
        u1.setName("A");
        u1.setId(1);
        u1.setGender(1);
        User u2 = new User();
        u2.setName("B");
        u2.setId(2);
        u2.setGender(0);
        User u3 = new User();
        u3.setName("C");
        u3.setId(2);
        u3.setGender(0);
        userList.add(u1);
        userList.add(u2);
        userList.add(u3);
        //list froEach
        userList.forEach(user -> System.out.println(JSON.toJSONString(user)));

        Map<Long, User> userInfoMap = userList.stream().collect(Collectors.toMap(User::getId, userInfo -> userInfo, (k1, k2) -> k2));
        userInfoMap.values().forEach(a->System.out.println(a.getName()));

        //map froEach
        userInfoMap.forEach((k, v) -> System.out.println(k + "---" + JSON.toJSONString(v)));
    }

    private static void doFilter() {
        List<User> userList = new ArrayList<>();
        User u1 = new User();
        u1.setName("A");
        u1.setId(1);
        u1.setGender(1);
        User u2 = new User();
        u2.setName("B");
        u2.setId(2);
        u2.setGender(0);
        User u3 = new User();
        u3.setName("C");
        u3.setId(2);
        u3.setGender(0);
        userList.add(u1);
        userList.add(u2);
        userList.add(u3);
        List<User> result = userList.stream().filter(ele -> ele.getGender()==1).collect(Collectors.toList());
        result.forEach(e ->System.out.println(e.getName()));
    }

    private static void list2Map() {
        List<User> userList = new ArrayList<>();
        User u1 = new User();
        u1.setName("A");
        u1.setId(1);
        u1.setGender(1);
        User u2 = new User();
        u2.setName("B");
        u2.setId(2);
        u2.setGender(0);
        User u3 = new User();
        u3.setName("C");
        u3.setId(2);
        u3.setGender(0);
        userList.add(u1);
        userList.add(u2);
        userList.add(u3);
        Map<Long, User> userInfoMap = userList.stream().collect(Collectors.toMap(User::getId, userInfo -> userInfo, (k1, k2) -> k2));
        userInfoMap.values().forEach(a->System.out.println(a.getName()));
    }
}

参考链接:juejin.cn/post/716009…