0%

Java学习-part.07(集合框架Map-HashMap)

Map接口

概述

  • 1、Map提供了一种映射的关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value。(类似于PHP中的关联数组)
  • 2、Map中的键值对以Entry类型的对象实例形式存在
  • 3、键(key值)不可重复,value值可以
  • 4、每个键最多只能映射到一个值
  • 5、Map接口提供了分别返回key值集合、value值集合以及Entry(键值对)集合的方法
  • 6、Map支持泛型,形式如:Map<K,V>

HashMap

  • 1、HashMap是Map的一个重要的实现类,也是最常用的,基于哈希表实现
  • 2、HashMap中的Entry对象是无序排列的
  • 3、Key值和value值都可以为null,但是一个HashMap只能有一个Key值为null的映射(key值不可重复)

以下是HashMap使用的实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package com.collection;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

//Map的方式添加
public class MapPutStudent {

public Map<String,Student> students;

public MapPutStudent() {
this.students = new HashMap<String,Student>();
}
/**
* 通过输入得到的学生信息,添加到HashMap中
*/
public void testPut() {
final int ADD_NUMS = 3;
int i=0;
while(i<ADD_NUMS) {
System.out.println("请输入学生ID:");
Scanner input = new Scanner(System.in);
String sid = input.next();
//HashMap的key是不能重复的
if(students.get(sid) == null) {
System.out.println("请输入学生姓名:");
String name = input.next();
//生成新的学生对象 (学生类:Student.java)
Student stuObj = new Student(sid,name);
//添加到hashMap中
students.put(sid, stuObj);
i++;
}else {
System.out.println("您输入的id已经存在了");
continue;
}
}
}
/**
* 通过KeySet方法获取所有的key,然后通过key获得value的值
*/
public void testKeySet() {
//通过keySet方法返回key的集合
Set<String> keys = students.keySet();
System.out.println("成功添加"+ keys.size() +"个学生");
//遍历keys获得每一个key的值,然后通过key获取value值
for(String key:keys) {
Student st = this.students.get(key);
System.out.println("学生:" + st.name);
}
}

public static void main(String[] args) {
MapPutStudent mp = new MapPutStudent();
mp.testPut();
mp.testKeySet();
}
}

删除HashMap操作实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
* 根据方法remove删除操作
*/
public void testRemove() {
while(true) {
System.out.println("请输入需要删除的学生ID:");
Scanner input = new Scanner(System.in);
String id = input.next();
Student stu = students.get(id);
if(stu == null) {
System.out.println("输入的id不存在");
continue;
}
students.remove(id);
System.out.println("成功删除:" + stu.name);
break;
}
}

HashMap中的常用方法:

1
2
3
4
5
6
7
8
Map<String,Student> mp = new HashMap<String,Student>();

mp.put(key,value); //添加值
mp.put(key,value); //如果key存在,就是修改该值
mp.keySet(); //返回key集合
mp.entrySet(); //返回键值对集合
mp.remove(key); //删除元素
mp.equals(); //等于