溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Map的常用方法有哪些

發(fā)布時(shí)間:2021-12-22 15:27:02 來(lái)源:億速云 閱讀:176 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(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í)!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

map
AI