天天看點

好程式員大資料學習路線分享Map學習筆記

​ 好程式員大資料學習路線分享Map學習筆記,set底層是預設value的map

Map的常用方法

//介紹Map接口的方法

Map<String, String> map = new HashMap<>();

//1.增加

//V put(K key,V value)  增加一個鍵值對

//關于傳回值,如果目前的key之前沒有添加過,傳回null.如果目前的key之前已經存在了,這裡傳回之前的值

//void putAll(Map<? extends K,? extends V> map)  增加多個

//2.删除

//V remove(Object key)  根據key删除元素

//傳回值就是被删掉的值

//void clear()  删除全部  != null

//3.擷取

//V get(Object key)  根據key查找元素

//int size()  擷取鍵值對的個數

//Set<K> keySet()   周遊方法一

//Set<Map.Entry<K,V>> entrySet() 周遊方法二

//4.常用的判斷

//boolean isEmpty()  //空map!=null

//boolean containsKey(K key) 是否包含目前的key

//boolean containsValue(V value) 是否包含目前的value

## 一、HashMap

​ 底層是哈希表,線程不安全

​ **哈希表結構**

![yuanli](G:\bigdata\week2\7-31\資料\hash表\Hash表.assets\yuanli.png)

### 2.HashMap與HashTable差別

​ 1.HashTable是線程安全的

​ 2.HashTable的key不能為空

## 二、TreeMap

​ 底層是二叉樹,線程不安全

public class Demo5 {

public static void main(String[] args) {

TreeMap<Dog, String> map = new TreeMap<>();

//如果沒有重寫compareTo或者compare方法,put内部無法調用元素的這兩個方法.是以會報錯

map.put(new Dog(), "haha");

}

}

class Dog implements Comparable<Dog>{

//2.元素可不可以作為key,跟元素内部的成員有沒有關系

Object object;

@Override

public int compareTo(Dog o) {

// TODO Auto-generated method stub

return 0;

}

}

```

# 可變參數

```

public static void main(String[] args) {

sum(2, 3);//值傳遞

//址傳遞

int[] arr = {3,4,5};

sum(arr);

//可變參數

//可變參數的特點

//1.給可變參數傳值的實參可以直接寫,個數不限制,内部會自動的将他們放入可變數組中.

sum1(5,6,7,8,9,3,3,4);

//2.當包括可變參數在内有多個參數時,可變參數必須放在最後面,并且一個方法中最多隻能有一個可變參數

sum2(6,3);

//3.當可變參數的方法與固定參數的方法是重載關系時,調用的順序,固定參數的優先于可變參數的.

sum3(2,3);

}

//求兩個數的和

//值傳遞

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;

}

//通過可變參數

//構成:資料類型+...    實際上就是資料類型[]  即:int[]

public static int sum1(int... a) {

int sum = 0;

for (int i = 0; i < a.length; i++) {

sum+=a[i];

}

return sum;

}

//2.當包括可變參數在内有多個參數時,可變參數必須放在最後面,并且一個方法中最多隻能有一個可變參數

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.當可變參數的方法與固定參數的方法是重載關系時,調用的順序,固定參數的優先于可變參數的.

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;

}

```