Java中具有映射關(guān)系的容器:數(shù)組和Map的區(qū)別說明
映射就意味著有兩部分;
存儲(chǔ)映射關(guān)系的容器是數(shù)組和Map集合;
區(qū)別:
(1)當(dāng)映射關(guān)系中的一方是有序編號(hào)時(shí),這個(gè)時(shí)候要想到數(shù)組這種結(jié)構(gòu);
(2)Map不一定需要有序編號(hào),它只能建立對(duì)象之間的關(guān)系;
(3)如果映射的兩方?jīng)]有任何一方是有序的編號(hào),就不能想數(shù)組了,這時(shí)應(yīng)該用集合中具備映射關(guān)系的容器Map。
注意:
(1)Map中鍵相同時(shí),鍵值會(huì)被覆蓋;
(2)Map中一個(gè)Key可以對(duì)應(yīng)一個(gè)集合,因?yàn)榧弦彩且粋€(gè)對(duì)象,集合也能往集合中放。
(3)Map<int,char>這樣寫是不正確的,因?yàn)?,泛型中定義的必須是引用數(shù)據(jù)類型,所以,要找int和char的對(duì)象的包裝類即Map<Integer,Character>
補(bǔ)充知識(shí):Java基礎(chǔ):集合(容器)—Collection和Map兩大體系介紹和用法

集合類的作用
集合類也叫做容器類,和數(shù)組一樣,用于存儲(chǔ)數(shù)據(jù),但數(shù)組類型單一,并且長(zhǎng)度固定,限制性很大,而集合類可以動(dòng)態(tài)增加長(zhǎng)度。
集合存儲(chǔ)的元素都是對(duì)象(引用地址),所以集合可以存儲(chǔ)不同的數(shù)據(jù)類型,但如果是需要比較元素來排序的集合,則需要類型一致。
集合中提供了統(tǒng)一的增刪改查方法,使用方便。
支持泛型,避免數(shù)據(jù)不一致和轉(zhuǎn)換異常,還對(duì)常用的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了封裝。
集合框架體系的組成
集合框架體系是由Collection、Map(映射關(guān)系)和Iterator(迭代器)組成,各部分的作用如下所示。
Collection體系中有三種集合:Set、List、Queue
Set(集): 元素是無序的且不可重復(fù)。
List(列表):元素是有序的且可重復(fù)。
Queue(隊(duì)列):封裝了數(shù)據(jù)結(jié)構(gòu)中的隊(duì)列。
Map體系
Map用于保存具有映射關(guān)系的數(shù)據(jù),即key-value(鍵值對(duì))。Map集合的key是唯一的,不可重復(fù),而value可以重復(fù)。所以一個(gè)value可以對(duì)應(yīng)多個(gè)key。
Map體系除了常用類之外,還有Properties(屬性類)也屬于Map體系。
Iterator(迭代器)
基本功能就是遍歷集合中的所有元素,除了List集合有一個(gè)獨(dú)有的迭代器Listiterator,別的集合類都是一樣的。
每個(gè)集合類都有iterator(),調(diào)用該方法就能得到迭代器對(duì)象。
如果List集合使用迭代器,建議使用ListIterator,比原有的迭代器多了一些方法。
除了使用迭代器遍歷集合元素,也可以使用加強(qiáng)for和Java8的foreach()方法。如果是List集合,使用for循環(huán)也能做到。
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參數(shù)的所有元素
void clear()___________________________________清除集合中所有元素
boolean retainAll(Collection<?> c)_____________保留指定Collection參數(shù)中元素,是兩個(gè)集合的元素交集
boolean equals(Object o)_______________________比較此 collection 與指定對(duì)象是否相等
boolean isEmpty()______________________________判斷該集合是否為空
Iterator<E> iterator()_________________________返回此 collection 的迭代器,用來遍歷元素
int hashCode()_________________________________返回集合的哈希碼值
int size()_____________________________________返回此 collection 中的元素?cái)?shù)
Object[] toArray()_____________________________返回一個(gè)包含該Collection所有元素的對(duì)象數(shù)組
<T> T[] toArray(T[] a)_________________________返回一個(gè)包含該Collection所有元素的數(shù)組,數(shù)組類型和指定數(shù)組的類型一致
Map接口方法
boolean containsKey(Object key)________________該映射是否包含指定鍵值
boolean containsValue(Object value)____________如果該鍵值對(duì)中有一個(gè)或多個(gè)key射到指定值,則返回 true
Set<Map.Entry<K,V>> entrySet()_________________返回此映射中包含的映射關(guān)系的 Set 視圖。
Set<K> keySet()________________________________返回此映射中所有鍵的 Set 視圖。
Collection<V> values()_________________________返回一個(gè)此映射中包含的值的 Collection
V get(Object key)______________________________返回指定鍵映射的值。如果不存在,則返回 null
V put(K key, V value)__________________________放入一個(gè)鍵值對(duì)(key-value)
void putAll(Map<? extends K,? extends V> m)____把指定映射的所有映射關(guān)系復(fù)制到此映射中
boolean isEmpty()______________________________如果此映射未包含鍵值映射關(guān)系,則返回 true
boolean equals(Object o)_______________________比較指定的對(duì)象與此映射是否相等
int size()_____________________________________返回此映射中的鍵-值映射關(guān)系數(shù)
int hashCode()_________________________________返回此映射的哈希碼值
以上這篇Java中具有映射關(guān)系的容器:數(shù)組和Map的區(qū)別說明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Java編碼輔助工具M(jìn)apstruct用法詳解
- MapStruct處理Java中實(shí)體與模型間不匹配屬性轉(zhuǎn)換的方法
- Java Map.get()返回指定鍵所映射的值
- Java HashSet(散列集),HashMap(散列映射)的簡(jiǎn)單介紹
- Java底層基于鏈表實(shí)現(xiàn)集合和映射--集合Set操作詳解
- Java實(shí)現(xiàn)鼠標(biāo)模擬與鍵盤映射
- 解析本地方法映射Java層的數(shù)據(jù)類型
- javaMybatis映射屬性,高級(jí)映射詳解
- java 中MyBatis注解映射的實(shí)例詳解
- Java MapStruct解了對(duì)象映射的毒
相關(guān)文章
SpringCloud Config使用本地倉(cāng)庫(kù)及map注入
這篇文章主要介紹了SpringCloud Config使用本地倉(cāng)庫(kù)及map注入,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
MyBatis-Puls插入或修改時(shí)某些字段自動(dòng)填充操作示例
這篇文章主要為大家介紹了MyBatis-Puls插入或修改時(shí)某些字段自動(dòng)填充操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
Java 把json對(duì)象轉(zhuǎn)成map鍵值對(duì)的方法
這篇文章主要介紹了java 把json對(duì)象中轉(zhuǎn)成map鍵值對(duì)的方法,本文的目的是把json串轉(zhuǎn)成map鍵值對(duì)存儲(chǔ),而且只存儲(chǔ)葉節(jié)點(diǎn)的數(shù)據(jù) 。需要的朋友可以參考下2018-04-04
Java?NIO緩沖區(qū)Buffer基礎(chǔ)教程示例
這篇文章主要介紹了Java?NIO緩沖區(qū)Buffer基礎(chǔ)教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Java深度學(xué)習(xí)庫(kù)DJL實(shí)現(xiàn)Python的NumPy方式
本文介紹了DJL庫(kù)的背景和基本功能,包括NDArray的創(chuàng)建、數(shù)學(xué)運(yùn)算、數(shù)據(jù)獲取和設(shè)置等,同時(shí),還展示了如何使用NDArray進(jìn)行數(shù)據(jù)預(yù)處理和模型推理部署2025-02-02
springboot+vue2+elementui實(shí)現(xiàn)時(shí)間段查詢方法
這篇文章主要介紹了springboot+vue2+elementui實(shí)現(xiàn)時(shí)間段查詢方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-05-05
Java 創(chuàng)建線程的3種方法及各自的優(yōu)點(diǎn)
這篇文章主要介紹了Java 創(chuàng)建線程的3種方法及各自的優(yōu)點(diǎn),文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07

