jdk中提供的Collection、Collections、Collector、Collectors你分的清楚?

詩水人間發表於2020-11-27

初次一看四個有點相似,而且有些時候一不小心還真有可能敲錯,因為喜歡程式碼提示沒仔細看提示,結果通過.去呼叫結果發現沒有找到你想用的方法。所以寫程式碼的時候需要注意一點這個區別

Collection是集合類的一個介面,定義了集合的一些規範方法
Collections是一個集合工具類,本身沒有實現Collection介面,而是內部類實現了Collection介面,它的作用就是封裝常用的集合操作。

public static void main(String[] args) {
    ArrayList<Integer> integers = new ArrayList<>();// 一個集合實現類
    List<Integer> numbers = Collections.synchronizedList(integers);// 得到加鎖集合numbers
    Collections.sort(integers);// 集合元素排序
    Integer max = Collections.max(integers);//得到集合中最大值
    ... // 省略其它集合操作,具體有哪些功能看原始碼即可
}

Collectors是一個收集器工具類,常用於流操作中。如下一般我們通過資料庫中得到集合資料,經過一系列流操作,得到的一個新流可以使用collect(Collectors.toList())將過濾轉換好的流元素收集起來。
而Collector的作用,類比上面Collections與Collection的作用,定義收集流元素的規範,流中的collect()方法傳入的都是一個Collector介面,然後Collectors工具類中的方法返回值也是這個介面,這樣就可以很方便的利用java8的新特性方法引用,如下的使用方式

public static void main(String[] args) {
    List<Integer> lists = Stream.of(1, 2, 3).collect(Collectors.toList());
}

相關文章