首页 > 编程语言 > 详细

java8+ Lambda表达式基本用法

时间:2020-12-05 09:17:22      阅读:32      评论:0      收藏:0      [点我收藏+]

LIST

public class LambdaTest {

    @Getter
    @Setter
    @AllArgsConstructor
    static class Student{
        private Long id;
        private String name;
        private Integer age;
    }

    public static void main(String[] args) {
        List<Student> studentList = Arrays.asList(new Student(1L,"张三",15),new Student(2L,"李四",11),
                new Student(3L,"王五",12),new Student(4L,"赵六",10));
        System.out.println("原数据:"+ JSONArray.toJSON(studentList));
        List<Student> collect1 = studentList.stream().filter(stu -> stu.getName().equals("张三")).collect(Collectors.toList());
        System.out.println("查出姓名是张三的学生:"+JSONArray.toJSON(collect1));
        List<Integer> collect2 = studentList.stream().map(stu -> stu.getAge()).collect(Collectors.toList());
        System.out.println("取出学生的年龄集合:"+collect2);
        List<Integer> collect6 = studentList.stream().map(stu -> stu.getAge()).distinct().collect(Collectors.toList());
        System.out.println("取出学生的年龄集合并去重:"+collect6);
        List<Student> collect3 = studentList.stream().skip(3).collect(Collectors.toList());
        System.out.println("学生集合里去除前三个:"+JSONArray.toJSON(collect3));
        List<Student> collect4 = studentList.stream().limit(3).collect(Collectors.toList());
        System.out.println("学生集合里取前三个:"+JSONArray.toJSON(collect4));
        Map<Integer, List<Student>> collect5 = studentList.stream().collect(Collectors.groupingBy(student -> student.getAge()));
        System.out.println("根据学生年龄分组:"+JSONArray.toJSON(collect5));
        int ageSum = studentList.stream().mapToInt(stu -> stu.getAge()).sum();
        System.out.println("找出学生年龄之和:"+ageSum);
        int ageMax= studentList.stream().mapToInt(stu -> stu.getAge()).max().getAsInt();
        System.out.println("找出学生年龄最大:"+ageMax);
        int ageMin= studentList.stream().mapToInt(stu -> stu.getAge()).min().getAsInt();
        System.out.println("找出学生年龄最小:"+ageMin);
        Double aggAverage = studentList.stream().mapToInt(stu -> stu.getAge()).average().getAsDouble();
        System.out.println("找出学生年龄最小:"+aggAverage);
        studentList.sort((a,b) -> b.getAge().compareTo(a.getAge()));
        System.out.println("根据学生年龄降序:"+JSONArray.toJSON(studentList));
        studentList.sort((a,b) -> a.getAge().compareTo(b.getAge()));
        System.out.println("根据学生年龄升序:"+JSONArray.toJSON(studentList));
    }

}

转逗号分隔

list.stream().collect(Collectors.joining(","))

排序

升序

studentList.sort(Comparator.comparing(Student::getAge));

降序

studentList.sort(Comparator.comparing(Student::getAge).reversed());

分组

根据传入的size将现有list分组(分页)

public static <T> List<List<T>> splitList(List<T> in, int size){
        List<List<T>> out = new ArrayList<>();
        int mode = in.size()%size;
        int page = in.size()/size;
        for(int i=1;i<=page;i ++){
            int start = (i-1)*size;
            List<T> sub = in.subList(start,start+size);
            out.add(sub);
        }
        if(mode>0){
            int start = page*size;
            List<T> sub = in.subList(start,start+mode);
            out.add(sub);
        }
        return out;
    }

java8+ Lambda表达式基本用法

原文:https://www.cnblogs.com/pigmen/p/14088275.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!