首頁 > 軟體

Java中具有對映關係的容器:陣列和Map的區別說明

2020-09-23 15:00:04

對映就意味著有兩部分;

儲存對映關係的容器是陣列和Map集合;

區別:

(1)當對映關係中的一方是有序編號時,這個時候要想到陣列這種結構;

(2)Map不一定需要有序編號,它只能建立物件之間的關係;

(3)如果對映的兩方沒有任何一方是有序的編號,就不能想陣列了,這時應該用集合中具備對映關係的容器Map。

注意:

(1)Map中鍵相同時,鍵值會被覆蓋;

(2)Map中一個Key可以對應一個集合,因為集合也是一個物件,集合也能往集合中放。

(3)Map<int,char>這樣寫是不正確的,因為,泛型中定義的必須是參照資料型別,所以,要找int和char的物件的包裝類即Map<Integer,Character>

補充知識:Java基礎:集合(容器)—Collection和Map兩大體系介紹和用法

集合類的作用

集合類也叫做容器類,和陣列一樣,用於儲存資料,但陣列型別單一,並且長度固定,限制性很大,而集合類可以動態增加長度。

集合儲存的元素都是物件(參照地址),所以集合可以儲存不同的資料型別,但如果是需要比較元素來排序的集合,則需要型別一致。

集合中提供了統一的增刪改查方法,使用方便。

支援泛型,避免資料不一致和轉換異常,還對常用的資料結構進行了封裝。

集合框架體系的組成

集合框架體系是由Collection、Map(對映關係)和Iterator(迭代器)組成,各部分的作用如下所示。

Collection體系中有三種集合:Set、List、Queue

Set(集): 元素是無序的且不可重複。

List(列表):元素是有序的且可重複。

Queue(佇列):封裝了資料結構中的佇列。

Map體系

Map用於儲存具有對映關係的資料,即key-value(鍵值對)。Map集合的key是唯一的,不可重複,而value可以重複。所以一個value可以對應多個key。

Map體系除了常用類之外,還有Properties(屬性類)也屬於Map體系。

Iterator(迭代器)

基本功能就是遍歷集合中的所有元素,除了List集合有一個獨有的迭代器Listiterator,別的集合類都是一樣的。

每個集合類都有iterator(),呼叫該方法就能得到迭代器物件。

如果List集合使用迭代器,建議使用ListIterator,比原有的迭代器多了一些方法。

除了使用迭代器遍歷集合元素,也可以使用加強for和Java8的foreach()方法。如果是List集合,使用for迴圈也能做到。

Collection介面方法

Collection是Set、List和Queue介面的父介面,Set、List、Queue的子類都能使用如下方法。

boolean add(E e)_______________________________新增指定元素
boolean addAll(Collection c)___________________將指定集合中所有元素都新增到此 collection
boolean contains(Object o)_____________________集合中是否包含了指定元素
boolean containsAll(Collection<?> c)___________該集合是否包含指定集合中所有元素
boolean remove(Object o)_______________________移除指定元素
boolean removeAll(Collection<?> c)_____________移除指定的collection引數的所有元素
void clear()___________________________________清除集合中所有元素
boolean retainAll(Collection<?> c)_____________保留指定Collection引數中元素,是兩個集合的元素交集
boolean equals(Object o)_______________________比較此 collection 與指定物件是否相等
boolean isEmpty()______________________________判斷該集合是否為空
Iterator<E> iterator()_________________________返回此 collection 的迭代器,用來遍歷元素
int hashCode()_________________________________返回集合的雜湊碼值
int size()_____________________________________返回此 collection 中的元素數
Object[] toArray()_____________________________返回一個包含該Collection所有元素的物件陣列
<T> T[] toArray(T[] a)_________________________返回一個包含該Collection所有元素的陣列,陣列型別和指定陣列的型別一致

Map介面方法

 boolean containsKey(Object key)________________該對映是否包含指定鍵值
 boolean containsValue(Object value)____________如果該鍵值對中有一個或多個key射到指定值,則返回 true
 Set<Map.Entry<K,V>> entrySet()_________________返回此對映中包含的對映關係的 Set 檢視。
 Set<K> keySet()________________________________返回此對映中所有鍵的 Set 檢視。
 Collection<V> values()_________________________返回一個此對映中包含的值的 Collection
 V get(Object key)______________________________返回指定鍵對映的值。如果不存在,則返回 null
 V put(K key, V value)__________________________放入一個鍵值對(key-value)
 void putAll(Map<? extends K,? extends V> m)____把指定對映的所有對映關係複製到此對映中
 boolean isEmpty()______________________________如果此對映未包含鍵值對映關係,則返回 true
 boolean equals(Object o)_______________________比較指定的物件與此對映是否相等
 int size()_____________________________________返回此對映中的鍵-值對映關係數
 int hashCode()_________________________________返回此對映的雜湊碼值

以上這篇Java中具有對映關係的容器:陣列和Map的區別說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com