1. 程式人生 > >集合基礎知識點

集合基礎知識點

在這裡插入圖片描述

Java集合類概述;ava SE包含了由一組類和介面組成的Java集合框架(Java Collections Framework,簡稱JCF),其主要功能是用來將儲存的資料以某種結構組織,並以特定的方式來訪問這些資料,其目標是提供一個處理物件集合的通用框架,減少程式設計師處理不同物件集合時的編碼量。 Java集合框架中根據這三個區別,將物件的儲存方式分為三種類型,分別是;  Set(集):物件容器中的物件沒有順序,且不能重複  List(列表):物件容器中的物件按照索引順序排序,而且可以有重複的物件。  Map(對映):物件容器中的元素包含一對"鍵物件-值物件"對映,其中鍵物件不能重複,值物件可以重複。 這三種物件的儲存方式,對應了Java集合框架中的三個核心介面Set、List和Map。

在Set和List介面之上,定義介面Collection,用於定義存取Set和List型別容器中物件的一些通用操作,包括物件的增加、刪除、遍歷等。 為支援物件的排序和遍歷訪問操作,Java集合框架中又提供了幾個介面:  介面SortedSet為Set型別容器提供排序功能。  介面SortedMap是為Map型別容器提供對鍵物件的排序。  介面Iterator提供了對集合物件進行遍歷訪問的遍歷器。  介面Comparable和Comparator用來實現集合中物件的排序

Collection介面;在集合框架中,集合(Collection)介面位於Set介面和List介面的最頂層,是Set介面和List介面的父介面。Collection介面中定義了Collection物件共有的一些基本方法,這些方法分為基本操作、批量操作和陣列操作。 Collection介面中的主要方法; 基本操作 int size() 返回當前集合中包含的元素個數 isEmpty() 判斷集合中是否含有元素 boolean contains(Object o); 判斷集合中是否包含某一指定元素 boolean add(Object o); 向集合中新增到某一元素 boolean remove(Object o);從集合中刪除某一元素 Iterator iterator(); 返回一個遍歷器,用來訪問集合中的各個元素 批量操作 containsAll(Collection c) ;判斷集合中是否包含某一指定集合中的全部元素 boolean addAll(Collection c); 將另一個集合中的所有元素插入到當前集合中 boolean removeAll(Collection c); 從集合中刪除指定集合中的全部元素 boolean retainAll(Collection c); 只保留指定集合中包含的元素,其他的刪除 void clear(); 刪除集合中所有元素 陣列操作 Object[] toArray(); 返回一個包含集合所有元素的array。

Iterator介面是一種用於遍歷集合的介面。所謂遍歷,是指從集合中取出每一個元素的過程。在Collection介面中,有一個iterator()方法,通過該方法可以返回一個Iterator物件。通過這個物件,可以遍歷集合中所有元素。 Iterator介面的方法; hasNext() 如果集合中還有更多元素,該方法返回true next() 返回集合中的下一個元素 remove() 刪除iterator返回的最後一個元素。 在實際應用開發中,很少直接使用Collection介面進行開發,基本都是使用Colleciton介面的子介面。Collection類的主要子介面包括List和Set。 List介面繼承自Collection介面,它有如下特點:  List中的元素是有順序的。  List通常允許重複元素。  List的實現類通常支援null元素。  可以通過索引訪問List物件容器中的元素。 List介面中的方法; void add(int index, Object o) 在列表指定的位置插入物件 boolean addAll(int index, Collection c) 將另一個集合中的所有物件插入到列表指定位置 Object get(int index) 返回列表中指定位置的物件 Object set(int index, Object o) 用指定物件替換列表中指定位置的物件 Object remove(int index) 刪除列表指定位置的物件。

泛型,就是允許在定義類、介面時指定型別形式引數,這個型別形式引數將在宣告變數、建立物件時確定(即傳入的實際引數)。 LinkedList是實現了雙向連結串列功能的列表,它將列表中的每個物件放在獨立的空間中,而且每個空間中還儲存有上一個和下一個連結的索引。

Set介面也繼承自Collection介面,同時也繼承了Collection介面的全部方法。它有如下特點:  Set型別容器中不能包含重複元素。當加入一個元素到容器中時候,要比較元素的內容是否存在重複的,所以加入Set型別物件容器的物件必須重寫equals()方法。  元素可能有順序,也可能沒有順序。  因為元素可能沒有順序,所以不能基於索引訪問Set中的元素。

HashSet類是基於雜湊演算法的Set介面實現,它主要有如下幾個特點:  當遍歷HashSet時,其中的元素是沒有順序的。  HashSet中不允許出現重複元素。這裡的重複元素是指有相同的雜湊碼,並且用equals()方法進行比較時,返回true的兩個物件。  允許包含null元素

Map(對映)介面是Java集合框架中不同於Collection介面的另一個重要介面,它對應的是在一種從鍵(Key)到值(Value)的對應關係的集合。也就是說,Map型別的物件容器裡面儲存著兩組物件,一組物件用於儲存Map裡的Key,另外一組用於儲存Value。Key和Value可以是任何引用型別的資料。Key不能重複,但是Value可以重複。 Key和Value之間存在單向一對一關係,即通過指定的Key,可以找到唯一對應的Value。也就是說,從Map中取出資料時,只要給出指定的Key,就可以取出對應的Value。 Map介面中定義了Map物件所共有的方法。這些方法基本分為三類操作:基本操作、批量操作、Collection視角的操作。

基本操作 get( Object key ) 返回與指定鍵相關的值 put(Object key, Object value ) 向該對映中新增鍵值對 remove(Object key) 從該對映中刪除包含指定鍵的鍵值對 containsKey(Object key ) 如果該對映包含指定鍵,則返回true containsValue(Object value ) 如果該對映包含指定值,則返回true size() 返回該對映中包含的鍵/值對映關係數 isEmpty() 如果該對映為空,則返回為true。 批量操作 clear() 刪除對映內所有元素 putAll(Map m) 將指定對映中的所有對映關係複製到此對映中 Collection 視角操作 keySet() 返回一個包含對映中所有Key的Set物件 values() 返回一個包含對映總所有Value的Collection物件 entrySet() 返回一個包含該Map中所有條目的Set物件,條目由內部介面Entry定義 HashMap是基於雜湊演算法的Map介面的實現。HashMap將它的鍵儲存在雜湊表中進行維護,鍵是唯一的。但是,HashMap並不保證鍵以特定順序排列,特別是不保證順序永久不變。

Java集合框架中包含了Collections類和Array類這兩個功能強大的工具類,這兩個類提供了包裝器實現、資料結構演算法和陣列相關的應用。這兩個工具類都提供了大量靜態方法,在操作集合和陣列時,使用這兩個工具類中的方法,可以大大減輕程式設計師編碼量,提升開發效率,提高程式碼效能。 Collections類 Java集合框架中提供了一個操作Set、List和Map等集合的工具類Collections,該工具類中提供了大量方法,用於對集合元素進行排序、查詢、修改等操作。這些方法都是靜態方法。 Collections類中提供了多個靜態方法用於建立執行緒安全的同步集合,包括:  synchronizedCollection(Collection c):返回一個執行緒安全的collection。  synchronizedList(List list):返回一個執行緒安全的list。  synchronizedSet(Set s):返回一個執行緒安全的set。  synchronizedMap(Map m):返回一個執行緒安全的map。

Java集合框架不僅提供了Collections類用於操作集合,同時也提供了Arrays類用於運算元組。Arrays類包含用來運算元組(比如排序和搜尋)的各種方法。