2020你还不会Java8新特性? (11)

完成一个功能时有多个方法,使用特化的方法。因为效率会更高。减少了装箱拆箱的操作。减少性能损耗。

举例: 简单功能实现 public static void main(String[] args) { List<String> list = Arrays.asList("nihao", "hello", "world", "welcome"); //对list按照字母的升序排序 // list.stream().sorted().forEach(System.out::println); //按照字符串的长度排序 // Collections.sort(list, (item1, item2) -> item1.length() - item2.length()); // Collections.sort(list, Comparator.comparingInt(String::length)); //字符串的降序排序 // list.sort(Comparator.comparingInt(String::length).reversed()); // 下边的形式会报错 item识别成了(Obejct). //lambda表达式的类型推断. 如果无法推断类型,需要自己制定类型 // list.sort(Comparator.comparingInt(item-> item.length()).reversed()); //这样写就成功了. list.sort(Comparator.comparingInt((String item )-> item.length()).reversed()); //为什么这个地方无法推断类型? // 能推断出的 : list.stream().... Strean<T> 传递的有参数. 精确的类型可以进行类型推断. //这个地方没有明确具体是什么类型.ToIntFunction<? super T> .可以是String 或者在往上的父类 这个地方看成了Object类了. // list.sort(Comparator.comparingInt((Boolean item)-> 1).reversed()); //这种Boolean 就会报错.编译不通过. System.out.println(list); } 比较器深入举例练习 举例:两层的比较.先按照字符串的长度升序排序. 长度相同,根据每一个ASCII码的顺序排序、

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwgpf.html