Comparator比較器,Comparable介面,Map集合
Collections工具集中的sort() public static <T> void sort(List<T> list) public static <T> void sort(List<T> list,Comparator<? super T> c)
Comparator介面在java.util包下面,排序是Comparator需要實現的功能之一,該介面代表的是是一個比較器,比較器具有可比性,可以做排序的,本質其實比較兩個物件誰排在前邊誰排在後邊。那麼比較的方法是:
publicint compare(Object o1,Object o2):比較兩個引數的的順序 兩個物件比較的結果有三種:大於,等於,小於 如果要按照升序排序:則o1小於o2返回(負數),相等返回0,o1大於o2返回(正數) 如果要按照降序排序:則o1小於o2返回(正數),相等返回0,o1大於o2返回(負數) 簡化操作: 升序排序: o1-o2 降序排序: o2-o1
簡述Comparable和Comparator兩個介面的區別
Comparator:強行對某個物件進行整體排序。可以將Comparator傳遞給sort()方法(如Collections.sort()後者Arrays.sort()),從而允許在排序順序上實現精確控制。還可以使用Comparator來控制某些資料結構(有序的set或者是有序的對映)的順序,或者為那些沒有自然順序的物件Collection提供排序。
Map集合
概述
現實生活中,我們常會看到這樣一種集合:IP地址和主機名,身份證號和個人,系統使用者名稱與系統使用者物件等,這種一一對應的關係,我們把它稱之為對映。Java當中提供了專門的集合類用來存放這種對映關係的物件。即java.util.Map
通過如下圖發現Collection介面集合和Map介面集合儲存資料的方式不一樣。
-
Collection中的集合,元素是孤立存在的(單身),向集合中儲存元素採用一個一個元素儲存的方式進行儲存。
-
Map中的集合,元素是成對存在的(夫妻),每個元素由鍵和值兩部分組成。通過鍵可以找到對應的值。
-
Collection中的集合我們稱之為單列集合,Map中的集合我們稱之為雙列集合
-
注意:Map中的集合不能包含重複的鍵,值可以重複,每個鍵對應唯一一個值。
Map中的常用子類
通過檢視API幫助文件發現有很多個子類,我們主要介紹HashMap集合、LinkedHaspMap集合、HashTable集合
-
HashMap:儲存資料採用的雜湊表結構,元素的存取順序可能不一致,由於要保證鍵的唯一性,不重複,需要重寫鍵的hashCode方法和equals方法。
-
LinkedHashMap:HashMap下面有個子類LinkedHashMap,儲存資料的方式是採用雜湊表結構+連結串列結構,通過連結串列結構可以保證元素的存取順序一致;通過雜湊表結構可以保證鍵的唯一、不重複,需要重寫鍵的hashCode方法和equals方法。
備註:Map介面當中,含有兩個泛型變數,在使用時,要為兩個泛型變數賦予資料型別,兩個泛型變數的資料型別可以相同,也可以不同。
Map介面當中的常用API方法Map<K,V>
常用方法如下:
-
public V put(K key,V value):把指定的鍵與指定的值新增到Map集合當中
-
public V remove(Object key):把指定的鍵所對應的鍵值對元素從Map集合當中刪除,返回被刪除元素的值
-
public V get(Object key):根據指定的鍵 獲得在Map集合當中對應的值
-
public Set<K> keySet(): 獲取Map集合當中的所有的key值,儲存到Set集合當中
-
public Set<Map.Entry<K,V>> entrySet():獲取到Map集合當中的所有的鍵值對物件的集合(Set集合)