您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Map的常用方法有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Map的常用方法有哪些”吧!
set底層是默認(rèn)value的map
Map的常用方法
//介紹Map接口的方法
Map<String, String> map = new HashMap<>();
//1.增加
//V put(K key,V value) 增加一個(gè)鍵值對(duì)
//關(guān)于返回值,如果當(dāng)前的key之前沒(méi)有添加過(guò),返回null.如果當(dāng)前的key之前已經(jīng)存在了,這里返回之前的值
//void putAll(Map<? extends K,? extends V> map) 增加多個(gè)
//2.刪除
//V remove(Object key) 根據(jù)key刪除元素
//返回值就是被刪掉的值
//void clear() 刪除全部 != null
//3.獲取
//V get(Object key) 根據(jù)key查找元素
//int size() 獲取鍵值對(duì)的個(gè)數(shù)
//Set<K> keySet() 遍歷方法一
//Set<Map.Entry<K,V>> entrySet() 遍歷方法二
//4.常用的判斷
//boolean isEmpty() //空map!=null
//boolean containsKey(K key) 是否包含當(dāng)前的key
//boolean containsValue(V value) 是否包含當(dāng)前的value
## 一、HashMap
底層是哈希表,線程不安全
**哈希表結(jié)構(gòu)**
![yuanli](G:\bigdata\week2\7-31\資料\hash表\Hash表.assets\yuanli.png)
### 2.HashMap與HashTable區(qū)別
1.HashTable是線程安全的
2.HashTable的key不能為空
## 二、TreeMap
底層是二叉樹(shù),線程不安全
/*
* TreeMap的注意點(diǎn):
* 1.什么類(lèi)型的數(shù)據(jù)類(lèi)型可以作為key?
* a:實(shí)現(xiàn)了Comparable接口的compareTo()方法 b:實(shí)現(xiàn)了Comparator接口的compare()方法
* 可以的代表:String,包裝類(lèi),自定義的實(shí)現(xiàn)了要求的類(lèi)
* 不可以的代表:數(shù)組,ArrayList,LinkedList(如果給他們建立的比較器也可以比較,但是不建議使用)
*
* 2.元素可不可以作為key,跟元素內(nèi)部的成員有沒(méi)有關(guān)系
* 元素可不可以作為key,跟元素內(nèi)部的成員有沒(méi)有關(guān)系
*/
public class Demo5 {
public static void main(String[] args) {
TreeMap<Dog, String> map = new TreeMap<>();
//如果沒(méi)有重寫(xiě)compareTo或者compare方法,put內(nèi)部無(wú)法調(diào)用元素的這兩個(gè)方法.所以會(huì)報(bào)錯(cuò)
map.put(new Dog(), "haha");
}
}
class Dog implements Comparable<Dog>{
//2.元素可不可以作為key,跟元素內(nèi)部的成員有沒(méi)有關(guān)系
Object object;
@Override
public int compareTo(Dog o) {
// TODO Auto-generated method stub
return 0;
}
}
```
# 可變參數(shù)
```
public static void main(String[] args) {
sum(2, 3);//值傳遞
//址傳遞
int[] arr = {3,4,5};
sum(arr);
//可變參數(shù)
//可變參數(shù)的特點(diǎn)
//1.給可變參數(shù)傳值的實(shí)參可以直接寫(xiě),個(gè)數(shù)不限制,內(nèi)部會(huì)自動(dòng)的將他們放入可變數(shù)組中.
sum1(5,6,7,8,9,3,3,4);
//2.當(dāng)包括可變參數(shù)在內(nèi)有多個(gè)參數(shù)時(shí),可變參數(shù)必須放在最后面,并且一個(gè)方法中最多只能有一個(gè)可變參數(shù)
sum2(6,3);
//3.當(dāng)可變參數(shù)的方法與固定參數(shù)的方法是重載關(guān)系時(shí),調(diào)用的順序,固定參數(shù)的優(yōu)先于可變參數(shù)的.
sum3(2,3);
}
//求兩個(gè)數(shù)的和
//值傳遞
public static int sum(int a,int b) {
return a+b;
}
//址傳遞
public static int sum(int[] a) {
int sum = 0;
for (int i = 0; i < a.length; i++) {
sum+=a[i];
}
return sum;
}
//通過(guò)可變參數(shù)
//構(gòu)成:數(shù)據(jù)類(lèi)型+... 實(shí)際上就是數(shù)據(jù)類(lèi)型[] 即:int[]
public static int sum1(int... a) {
int sum = 0;
for (int i = 0; i < a.length; i++) {
sum+=a[i];
}
return sum;
}
//2.當(dāng)包括可變參數(shù)在內(nèi)有多個(gè)參數(shù)時(shí),可變參數(shù)必須放在最后面,并且一個(gè)方法中最多只能有一個(gè)可變參數(shù)
public static void sum2(float b,int... a) {
int sum = 0;
for (int i = 0; i < a.length; i++) {
sum+=a[i];
}
System.out.println(sum);
}
//3.當(dāng)可變參數(shù)的方法與固定參數(shù)的方法是重載關(guān)系時(shí),調(diào)用的順序,固定參數(shù)的優(yōu)先于可變參數(shù)的.
public static int sum3(int a, int b) {
System.out.println("a");
int sum = 0;
return sum;
}
public static int sum3(int... a) {
System.out.println("b");
int sum = 0;
return sum;
}
```
到此,相信大家對(duì)“Map的常用方法有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。