好程式員大資料學習路線分享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;
}
```