Java中的集合工具類Collections詳解
Collections
java.utils.Collections是集合工具類,用來對集合進行操作。不是Collection集合的根接口,這個要區(qū)分開來。 部分方法如下:
- public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。
- public static void shuffle(List<?> list) 打亂順序:打亂集合順序。
- public static <T> void sort(List<T> list):將集合中元素按照默認規(guī)則排序。
- public static <T> void sort(List<T> list,Comparator<? super T> ):將集合中元素按照指定規(guī)則排序。
使用Collections以后更加方便的創(chuàng)建添加元素,以及排序了,自帶排序方法。ArrayList是沒有自帶的排序方法。
public class CollectionsDemo {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
//原來寫法
//list.add(12);
//list.add(14);
//list.add(15);
//list.add(1000);
//采用工具類 完成 往集合中添加元素
Collections.addAll(list, 5, 222, 1,2);
System.out.println(list);
//排序方法
Collections.sort(list);
System.out.println(list);
}
}
結果:
[5, 222, 1, 2]
[1, 2, 5, 222]
public static <T> void sort(List<T> list,Comparator<? super T> ):將集合中元素按照指定規(guī)則排序。接下來講解一下指定規(guī)則的排列。
Comparator比較器
public static <T> void sort(List<T> list):將集合中元素按照默認規(guī)則排序。
public class CollectionsDemo2 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("cba");
list.add("aba");
list.add("sba");
list.add("nba");
//排序方法
Collections.sort(list);
System.out.println(list);
}
}
結果輸出為:
[aba, cba, nba, sba]
我們使用的是默認的規(guī)則完成字符串的排序,那么默認規(guī)則是怎么定義出來的呢?
說到排序了,簡單的說就是兩個對象之間比較大小,那么在JAVA中提供了兩種比較實現的方式,一種是比較死板的采用java.lang.Comparable接口去實現,一種是靈活的當我需要做排序的時候在去選擇的java.util.Comparator接口完成。
那么我們采用的public static <T> void sort(List<T> list)這個方法完成的排序,實際上要求了被排序的類型需要實現Comparable接口完成比較的功能,在String類型上如下:
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
String類實現了這個接口,并完成了比較規(guī)則的定義,但是這樣就把這種規(guī)則寫死了,那比如我想要字符串按照第一個字符降序排列,那么這樣就要修改String的源代碼,這是不可能的了,那么這個時候我們可以使用
public static <T> void sort(List<T> list,Comparator<? super T> )方法靈活的完成,這個里面就涉及到了Comparator這個接口,位于位于java.util包下,排序是comparator能實現的功能之一,該接口代表一個比較器,比較器具有可比性!顧名思義就是做排序的,通俗地講需要比較兩個對象誰排在前誰排在后,那么比較的方法就是:
public int compare(String o1, String o2):比較其兩個參數的順序。
- 兩個對象比較的結果有三種:大于,等于,小于。
- 如果要按照升序排序,
- 則o1 小于o2,返回(負數),相等返回0,01大于02返回(正數)
- 如果要按照降序排序
- 則o1 小于o2,返回(正數),相等返回0,01大于02返回(負數)
操作如下:
public class CollectionsDemo3 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("cba");
list.add("aba");
list.add("sba");
list.add("nba");
//排序方法 按照第一個單詞的降序
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.charAt(0) - o1.charAt(0);
}
});
System.out.println(list);
}
}結果如下:
[sba, nba, cba, aba]
Comparable和Comparator兩個接口的區(qū)別
Comparable:強行對實現它的每個類的對象進行整體排序。這種排序被稱為類的自然排序,類的compareTo方法被稱為它的自然比較方法。只能在類中實現compareTo()一次,不能經常修改類的代碼實現自己想要的排序。實現此接口的對象列表(和數組)可以通過Collections.sort(和Arrays.sort)進行自動排序,對象可以用作有序映射中的鍵或有序集合中的元素,無需指定比較器。
Comparator強行對某個對象進行整體排序??梢詫omparator 傳遞給sort方法(如Collections.sort或 Arrays.sort),從而允許在排序順序上實現精確控制。還可以使用Comparator來控制某些數據結構(如有序set或有序映射)的順序,或者為那些沒有自然順序的對象collection提供排序。
總結
Comparable是Collections內部默認的排序方法.然而Comparator是可以按照自己設計的方法來進行排序。
到此這篇關于Java中的集合工具類Collections詳解的文章就介紹到這了,更多相關Java的Collections工具類內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- java.util.Collections類—emptyList()方法的使用
- 淺談Java中Collections.sort對List排序的兩種方法
- Java使用Collections.sort()排序的方法
- java安全之CommonsCollections4詳解
- Java中的Collections類的使用示例詳解
- Java中Collections.sort的使用
- Java的可變參數與Collections類的功能示例解析
- Java中Collection與Collections的區(qū)別詳解
- Java Collection和Collections的區(qū)別
- Java中Collections.sort()排序方法舉例詳解
- Java中Collection和Collections的區(qū)別
相關文章
Springboot使用MybatisPlus實現mysql樂觀鎖
MySQL中的樂觀鎖(Optimistic?Locking)是一種并發(fā)控制策略,本文將使用Springboot和MybatisPlus實現MySQL中的樂觀鎖,需要的可以參考下2024-12-12
Java Spring 中的監(jiān)聽器Listener詳解與實戰(zhàn)教程
Spring 提供了多種監(jiān)聽器機制,可以用于監(jiān)聽應用生命周期、會話生命周期和請求處理過程中的事件,這篇文章主要介紹了Java Spring 之監(jiān)聽器(Listener)詳解與實戰(zhàn),需要的朋友可以參考下2025-06-06
SpringBoot整合iText7導出PDF及性能優(yōu)化方式
在SpringBoot項目中整合iText7庫以導出PDF文件,不僅能夠滿足報告生成需求,而且可以處理復雜的文檔布局與樣式,整合步驟包括添加Maven依賴、編寫PDF生成代碼,性能優(yōu)化方面,建議使用流式處理、緩存樣式與字體、優(yōu)化HTML/CSS結構、采用異步處理2024-09-09

