ITPub博客

首页 > 大数据 > 数据挖掘 > 好程序员大数据学习路线分享Map学习笔记

好程序员大数据学习路线分享Map学习笔记

原创 数据挖掘 作者:好程序员IT 时间:2019-09-28 15:31:52 0 删除 编辑

好程序员大数据学习路线分享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

底层是二叉树,线程不安全

/*

 * 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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
欢迎关注公众号:好程序员特训营 web前端教程分享 723729549 大数据教程分享 703503210

注册时间:2019-03-20

  • 博文量
    539
  • 访问量
    410848