這篇文章主要講解了“Java中Map的簡(jiǎn)介及其使用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Java中Map的簡(jiǎn)介及其使用”吧!
創(chuàng)新互聯(lián)是一家專業(yè)從事做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計(jì)公司,作為專業(yè)的成都網(wǎng)站建設(shè)公司,創(chuàng)新互聯(lián)依托強(qiáng)大的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營(yíng)經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開發(fā)服務(wù)!
1.Map集合概述和特點(diǎn)
概述:
將鍵映射到值的對(duì)象,一個(gè)映射不能包含重復(fù)的鍵,每個(gè)鍵最多只能映射到一個(gè)值。
Map接口和Collection接口的不同
Map是雙列的,Collection是單列的
Map的鍵唯一,Collection的子體系Set是唯一的
Map集合的數(shù)據(jù)結(jié)構(gòu)針對(duì)鍵有效,跟值無關(guān);Collection集合的數(shù)據(jù)結(jié)構(gòu)是針對(duì)元素有效。
2.Map集合的功能概述
(1):添加
V put(K key,V value):添加元素。這個(gè)其實(shí)還有另一個(gè)功能?替換
如果鍵是第一次存儲(chǔ),就直接存儲(chǔ)元素,返回null
如果鍵不是第一次存在,就用值把以前的值替換掉,返回以前的值
(2) :刪除
void clear():移除所有的鍵值對(duì)元素
V remove(Object key):根據(jù)鍵刪除鍵值對(duì)元素,并把值返回
(3) :判斷
boolean containsKey(Object key):判斷集合是否包含指定的鍵
boolean containsValue(Object value):判斷集合是否包含指定的值
boolean isEmpty():判斷集合是否為空
(4) :獲取
Set<Map.Entry<K,V>> entrySet(): 返回一個(gè)鍵值對(duì)的Set集合
V get(Object key):根據(jù)鍵獲取值
Set keySet():獲取集合中所有鍵的集合
Collection values():獲取集合中所有值的集合
(5) :長(zhǎng)度
int size():返回集合中的鍵值對(duì)的對(duì)數(shù)
3.Map集合的遍歷之鍵找值
獲取所有鍵的集合,遍歷鍵的集合,獲取到每一個(gè)鍵根據(jù)鍵找值
示例代碼如下:
public class Test4 {
public static void main(String[] args) {
HashMap<Phone,String> map = new HashMap<>();
map.put(new Phone("Apple",7000),"美國(guó)");
map.put(new Phone("Sony",5000),"日本");
map.put(new Phone("Huawei",6000),"中國(guó)");
Set<Phone> phones = map.keySet();
Iterator<Phone> iterator = phones.iterator();
while (iterator.hasNext()){
Phone next = iterator.next();
System.out.println(next.getBrand()+"=="+next.getPrice()+"=="+map.get(next));
}
}
}
class Phone{
private String Brand;
private int Price;
public Phone(String brand, int price) {
Brand = brand;
Price = price;
}
public String getBrand() {
return Brand;
}
public void setBrand(String brand) {
Brand = brand;
}
public int getPrice() {
return Price;
}
public void setPrice(int price) {
Price = price;
}
}
獲取所有鍵值對(duì)對(duì)象的集合,遍歷鍵值對(duì)對(duì)象的集合,獲取到每一個(gè)鍵值對(duì)對(duì)象,根據(jù)鍵值對(duì)對(duì)象找鍵和值
示例代碼如下:
public class Test4 {
public static void main(String[] args) {
HashMap<Phone,String> map = new HashMap<>();
map.put(new Phone("Apple",7000),"美國(guó)");
map.put(new Phone("Sony",5000),"日本");
map.put(new Phone("Huawei",6000),"中國(guó)");
Set<Map.Entry<Phone, String>> entries = map.entrySet();
for (Map.Entry<Phone, String> entry : entries) {
System.out.println(entry.getKey().getBrand()+"==="+entry.getKey().getPrice()+"==="+entry.getValue());
}
}
}
4.LinkedHashMap的概述和使用
LinkedHashMap的概述: Map 接口的哈希表和鏈接列表實(shí)現(xiàn),具有可預(yù)知的迭代順序。LinkedHashMap的特點(diǎn): 底層的數(shù)據(jù)結(jié)構(gòu)是鏈表和哈希表 元素有序 并且唯一。
元素的有序性由鏈表數(shù)據(jù)結(jié)構(gòu)保證 唯一性由 哈希表數(shù)據(jù)結(jié)構(gòu)保證。
Map集合的數(shù)據(jù)結(jié)構(gòu)只和鍵有關(guān)
5.TreeMap集合
TreeMap 鍵不允許插入null
TreeMap: 鍵的數(shù)據(jù)結(jié)構(gòu)是紅黑樹,可保證鍵的排序和唯一性
排序分為自然排序和比較器排序
線程是不安全的效率比較高
6.TreeMap集合排序:
實(shí)現(xiàn)Comparable接口,重寫CompareTo方法
使用比較器
7.TreeMap集合的遍歷
示例代碼如下:
public class Test4 {
public static void main(String[] args) {
TreeMap<Phone,String> map = new TreeMap<>();
map.put(new Phone("Apple",7000),"美國(guó)");
map.put(new Phone("Sony",5000),"日本");
map.put(new Phone("Huawei",6000),"中國(guó)");
Set<Phone> phones = map.keySet();
Iterator<Phone> iterator = phones.iterator();
while(iterator.hasNext()){
Phone next = iterator.next();
System.out.println(next.getBrand()+"==="+next.getPrice()+"==="+map.get(next));
}
}
}
class Phone implements Comparable<Phone>{
private String Brand;
private int Price;
public Phone(String brand, int price) {
Brand = brand;
Price = price;
}
public String getBrand() {
return Brand;
}
public void setBrand(String brand) {
Brand = brand;
}
public int getPrice() {
return Price;
}
public void setPrice(int price) {
Price = price;
}
@Override
public int compareTo(Phone o) {
return this.getPrice() - o.getPrice();
}
}
8.Collections工具類的概述和常見方法
(1):Collections類概述: 針對(duì)集合操作 的工具類
(2):Collections成員方法
public static void sort(List list): 排序,默認(rèn)按照自然順序
public static int binarySearch(List<?> list,T key): 二分查找
public static T max(Collection<?> coll): 獲取最大值
public static void reverse(List<?> list): 反轉(zhuǎn)
public static void shuffle(List<?> list): 隨機(jī)置換
Map中的鍵唯一,但是當(dāng)存儲(chǔ)自定義對(duì)象時(shí),需要重寫Hashcode和equals方法
感謝各位的閱讀,以上就是“Java中Map的簡(jiǎn)介及其使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Java中Map的簡(jiǎn)介及其使用這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
當(dāng)前標(biāo)題:Java中Map的簡(jiǎn)介及其使用
轉(zhuǎn)載源于:http://muchs.cn/article44/pjjche.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站設(shè)計(jì)、Google、做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)