(o1,o2) -> Integer.compare(o1,o2)
语法格式
new Thread(() -> {System.out.println("hello");}).start();
Consumer a = (Integer integer) -> {System.out.println(integer);};
Consumer a = (integer) -> {System.out.println(integer);};
Consumer a = integer -> {System.out.println(integer);};
Comparator comparator = (o1, o2) -> {return o1 - o2;};
Comparator comparator = (o1, o2) -> o1 - o2;
@FunctionalInterface
Java8 后引入类(或者对象):: 方法名
Integer :: compare
Lists.newArrayList("a", "b", "c").forEach(System.out::println)
构造器引用
// 无参构造器
Supplier userSupplier = User::new;// 有参构造器
Function userFunction = User::new;
Stream 和 Collection 区别
PersonBo personBo1 = new PersonBo(1, "张三");PersonBo personBo2 = new PersonBo(2, "李四");PersonBo personBo3 = new PersonBo(3, "王五");PersonBo personBo4 = new PersonBo(4, "赵六");List list = new ArrayList<>();list.add(personBo1);list.add(personBo2);list.add(personBo3);list.add(personBo4);// filter 过滤(返回还是对象)list.stream().filter(t -> {return t.getId() % 2 == 0;}).forEach(System.out::println);// match:anyMatch、allMatch、noneMatch 对流中的元素进行匹配boolean y = list.stream().anyMatch(personBo -> {return personBo.getName().contains("y");});// map 将集合中的元素类型,转换成另一种数据类型list.stream().map(PersonBo::getId).forEach(System.out::println);// sorted 根据字段属性进行排序list.stream().sorted((u1, u2) -> {return u2.getId().compareTo(u1.getId());}).map(PersonBo::getId).forEach(System.out::println);// limit限制数————collect将map单个映射转为list集合list.stream().map(t -> {return t.getId();}).limit(1).forEach(System.out::println);// distinct 对流中的元素进行去重list.stream().distinct().forEach(System.out::println);// partitioningBy 根据判断的值为true还是false分为两组Map> collect = list.stream().collect(Collectors.partitioningBy(personBo -> {return personBo.getId() > 3;}));// groupingBy 将数据分组成多个key的形式(即groupby分组)Map> collect1 = list.stream().collect(Collectors.groupingBy(PersonBo::getId));// reduce 计算集合总数Integer sum = list.stream().map(PersonBo::getId).reduce(Integer::sum).get();System.out.println(sum);
下一篇:EdgeYOLO学习笔记