您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java中Map的簡介及其使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java中Map的簡介及其使用”吧!
1.Map集合概述和特點
概述:
將鍵映射到值的對象,一個映射不能包含重復的鍵,每個鍵最多只能映射到一個值。
Map接口和Collection接口的不同
Map是雙列的,Collection是單列的
Map的鍵唯一,Collection的子體系Set是唯一的
Map集合的數據結構針對鍵有效,跟值無關;Collection集合的數據結構是針對元素有效。
2.Map集合的功能概述
(1):添加
V put(K key,V value):添加元素。這個其實還有另一個功能?替換
如果鍵是第一次存儲,就直接存儲元素,返回null
如果鍵不是第一次存在,就用值把以前的值替換掉,返回以前的值
(2) :刪除
void clear():移除所有的鍵值對元素
V remove(Object key):根據鍵刪除鍵值對元素,并把值返回
(3) :判斷
boolean containsKey(Object key):判斷集合是否包含指定的鍵
boolean containsValue(Object value):判斷集合是否包含指定的值
boolean isEmpty():判斷集合是否為空
(4) :獲取
Set<Map.Entry<K,V>> entrySet(): 返回一個鍵值對的Set集合
V get(Object key):根據鍵獲取值
Set keySet():獲取集合中所有鍵的集合
Collection values():獲取集合中所有值的集合
(5) :長度
int size():返回集合中的鍵值對的對數
3.Map集合的遍歷之鍵找值
獲取所有鍵的集合,遍歷鍵的集合,獲取到每一個鍵根據鍵找值
示例代碼如下:
public class Test4 {
public static void main(String[] args) {
HashMap<Phone,String> map = new HashMap<>();
map.put(new Phone("Apple",7000),"美國");
map.put(new Phone("Sony",5000),"日本");
map.put(new Phone("Huawei",6000),"中國");
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;
}
}
獲取所有鍵值對對象的集合,遍歷鍵值對對象的集合,獲取到每一個鍵值對對象,根據鍵值對對象找鍵和值
示例代碼如下:
public class Test4 {
public static void main(String[] args) {
HashMap<Phone,String> map = new HashMap<>();
map.put(new Phone("Apple",7000),"美國");
map.put(new Phone("Sony",5000),"日本");
map.put(new Phone("Huawei",6000),"中國");
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 接口的哈希表和鏈接列表實現,具有可預知的迭代順序。LinkedHashMap的特點: 底層的數據結構是鏈表和哈希表 元素有序 并且唯一。
元素的有序性由鏈表數據結構保證 唯一性由 哈希表數據結構保證。
Map集合的數據結構只和鍵有關
5.TreeMap集合
TreeMap 鍵不允許插入null
TreeMap: 鍵的數據結構是紅黑樹,可保證鍵的排序和唯一性
排序分為自然排序和比較器排序
線程是不安全的效率比較高
6.TreeMap集合排序:
實現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),"美國");
map.put(new Phone("Sony",5000),"日本");
map.put(new Phone("Huawei",6000),"中國");
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類概述: 針對集合操作 的工具類
(2):Collections成員方法
public static void sort(List list): 排序,默認按照自然順序
public static int binarySearch(List<?> list,T key): 二分查找
public static T max(Collection<?> coll): 獲取最大值
public static void reverse(List<?> list): 反轉
public static void shuffle(List<?> list): 隨機置換
Map中的鍵唯一,但是當存儲自定義對象時,需要重寫Hashcode和equals方法
感謝各位的閱讀,以上就是“Java中Map的簡介及其使用”的內容了,經過本文的學習后,相信大家對Java中Map的簡介及其使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。