学习jdk1.8-Lambda 表达式 与Collections

  直到现在jdk1.8版本已经发布了有近5个年头了。今天做一个浅显的学习和记录,便于后面的查找。如果你也有兴趣,不妨一起交流交流,如有不对之处,还请指点指点…

写在前面

  看牛逼的代码,到处都是知识点。咱研究研究一些简单的,使用一些示例代码来进行操作。

Lambda 表达式

老版本的Java中的排序方式,实现一组字符串按照字典反序排列,排序结果["peter","jany","brain","anna","alex"]

1
2
3
4
5
6
7
8
List<String> names = Arrays.asList("peter","anna","brain","jany","alex");

Collections.sort(names, new Comparator<String>(){
@Override
public int compare(String a, String b){
return b.compareTo(a);
}
})

Comparator 中 compare方法介绍:
Comparator-compare-2018813224649
Collections 中 sort方法介绍:
该方法默认的排序是正序
Collections_sort_1-2018813225316
Collections_sort_2-2018813225325
String的compareTo方法:
public int compareTo(String anotherString)如果参数字符串等于此字符串,则值为0 ; 如果这个字符串的字典比字符串参数小,则值小于0; 如果此字符串的字典大小超过字符串参数,则值大于0 。
Java8中的lambda表达式:

1
2
3
Collections.sort(names,(String a, String b) -> {
return b.compareTo(a);
})

更简单的方式:

1
Collections.sort(names,(String a, String b) -> b.compareTo(a));

更更简单的方式:

1
Collections.sort(names,(a,b) -> b.compareTo(a));

一种不使用lambda表达式的方法,reverseOrder() 以反字典(字母顺序)排列阵列:

1
Collections.sort(names, Comparator.reverseOrder());

Stream 接口

  Java8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性,串行Stream上的操作是在一个线程中依次完成,而并行Stream则是在多个线程上同时执行。

  1. 创建一个stream的方式,Collection.stream()创建了一个串行的stream;Collection.parallelStream()创建了一个并行的stream;:
    1
    2
    3
    4
    5
    6
    7
    List<String> stringCollection = new ArrayList<>();
    stringCollection.add("ddd");
    stringCollection.add("ccc");
    stringCollection.add("bbb");
    stringCollection.add("aaa");
    Stream<String> stream = stringCollection.stream();
    Stream<String> stringStream = stringCollection.parallelStream();