jdk中提供的Collection、Collections、Collector、Collectors你分的清楚?
初次一看四個有點相似,而且有些時候一不小心還真有可能敲錯,因為喜歡代碼提示沒仔細看提示,結果通過.去調用結果發現沒有找到你想用的方法。所以寫代碼的時候需要注意一點這個區別
Collections.emptyList(); Collectors.toMap(......);//所在包分別為 import java.util.Collections; import java.util.stream.Collectors;Collection是集合類的一個接口,定義了集合的一些規范方法
Collections是一個集合工具類,本身沒有實現Collection接口,而是內部類實現了Collection接口,它的作用就是封裝常用的集合操作。
Collectors是一個收集器工具類,常用于流操作中。如下一般我們通過數據庫中得到集合數據,經過一系列流操作,得到的一個新流可以使用collect(Collectors.toList())將過濾轉換好的流元素收集起來。
而Collector的作用,類比上面Collections與Collection的作用,定義收集流元素的規范,流中的collect()方法傳入的都是一個Collector接口,然后Collectors工具類中的方法返回值也是這個接口,這樣就可以很方便的利用java8的新特性方法引用,如下的使用方式
Collections:它的出現給集合操作提供了更多的功能。這個類不需要創建對象,內部提供的都是靜態方法。
靜態方法:
Collections.sort(list);//list集合進行元素的自然順序排序。Collections.sort(list,new ComparatorByLen());//按指定的比較器方法排序。public class ComparatorByLen implements Comparator<String>{public int compare(String s1,String s2){int temp = s1.length()-s2.length();return temp==0?s1.compareTo(s2):temp;} } Collections.max(list); //返回list中字典順序最大的元素。int index = Collections.binarySearch(list,"zz");//二分查找,返回角標。Collections.reverseOrder();//逆向反轉排序。Collections.shuffle(list);//隨機對list中的元素進行位置的置換。將非同步集合轉成同步集合的方法:Collections中的 XXX synchronizedXXX(XXX);
List synchronizedList(list);Map synchronizedMap(map);原理:定義一個類,將集合所有的方法加同一把鎖后返回。
Collection 和 Collections的區別:
Collections是個java.util下的類,是針對集合類的一個工具類,提供一系列靜態方法,實現對集合的查找、排序、替換、線程安全化(將非同步的集合轉換成同步的)等操作。
Collection是個java.util下的接口,它是各種集合結構的父接口,繼承于它的接口主要有Set和List,提供了關于集合的一些操作,如插入、刪除、判斷一個元素是否其成員、遍歷等
總結
以上是生活随笔為你收集整理的jdk中提供的Collection、Collections、Collector、Collectors你分的清楚?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html5和前端精要(5)-基于pyth
- 下一篇: @PostConstruct注解详解