首页 > 大数据 > 数据挖掘 > 好程序员大数据学习路线分享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
底层是哈希表,线程不安全
** 哈希表结构 **

### 2.HashMap 与 HashTable 区别
1.HashTable 是线程安全的
2.HashTable 的 key 不能为空
## 二、 TreeMap
底层是二叉树,线程不安全
/*
* TreeMap 的注意点 :
* 1. 什么类型的数据类型可以作为 key?
* a: 实现了 Comparable 接口的 compareTo() 方法 b: 实现了 Comparator 接口的 compare() 方法
* 可以的代表 :String, 包装类 , 自定义的实现了要求的类
* 不可以的代表 : 数组 ,ArrayList,LinkedList( 如果给他们建立的比较器也可以比较 , 但是不建议使用 )
*
* 2. 元素可不可以作为 key, 跟元素内部的成员有没有关系
* 元素可不可以作为 key, 跟元素内部的成员有没有关系
*/
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;
}
```
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69913892/viewspace-2658607/ ,如需转载,请注明出处,否则将追究法律责任。