1. 程式人生 > 實用技巧 >Comparator比較器,Comparable介面,Map集合

Comparator比較器,Comparable介面,Map集合

Comparator介面比較器

 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需要實現的功能之一,該介面代表的是是一個比較器,比較器具有可比性,可以做排序的,本質其實比較兩個物件誰排在前邊誰排在後邊。那麼比較的方法是:

public
int compare(Object o1,Object o2):比較兩個引數的的順序 兩個物件比較的結果有三種:大於,等於,小於 如果要按照升序排序:則o1小於o2返回(負數),相等返回0,o1大於o2返回(正數) 如果要按照降序排序:則o1小於o2返回(正數),相等返回0,o1大於o2返回(負數) 簡化操作: 升序排序: o1-o2 降序排序: o2-o1
簡述Comparable和Comparator兩個介面的區別

Comparable:強行對實現它的每個類物件進行整體排序。這種排序我們一般把它稱之為自然排序,類的compareTo方法被稱之為它的自然比較方法。只能在類中實現compareTo方法一次,不能經常修改類的程式碼實現自己想要的排序。實現此介面的物件列表(和陣列)可以通過Collections.sort()(和Arrays.sort())進行自動排序,物件可以用作有序對映中的鍵或者有序集合中的元素,無需指定比較器。

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集合)