Java—集合框架Map
- Map接口
Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,key和value可以是任意类型的对象,能够实现根据key快速查找value。
Map中的键值对以Entry类型的对象实例形式存在。
键(key值)不可重复,value值可以。
每个键最多只能映射到一个值,一个值可以对应多个键。
Map接口提供了分别返回key值集合、value值集合以及Entry(键值对)集合的方法。Entry类是Map的一个内部类。
Map支持泛型,形式如:Map<Key值类型,V值类型>
- HashMap类
HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现。
HashMap中的Entry对象是无序排列的。
Key值和value值都可以为null,但是一个HashMap只能有一个key值为null的映射
MapTest.java
package com.test.collection; import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set; public class MapTest {
public Map<String, Student> students; public MapTest() {
this.students = new HashMap<String, Student>();
} /**
* 添加
*/
public void testPut(){
Scanner console = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("输入学生ID:");
String studentId = console.next();
//判断该ID是否被占用
Student st = students.get(studentId);
if (st == null) {
//提示输入学生姓名
System.out.println("输入学生姓名:");
String studentName = console.next();
//创建学生对象
Student newStudent = new Student(studentId, studentName);
//通过调用students的put方法,添加ID-学生映射
students.put(studentId, newStudent);
System.out.println("成功添加学生:" + students.get(studentId).name);
} else {
System.out.println("该学生ID被占用");
continue;
}
}
}
/**
* 通过keySet方法遍历Map
*/
public void testKeySet() {
//通过keySet方法,返回Map中所有“键”的Set集合
Set<String> keySet = students.keySet();
//获得students的容量
System.out.println("总共有" + students.size() + "个学生");
//遍历keySet,取得每一个键,再调用get方法取得每一个键对应的value
for (String stuId : keySet) {
Student st = students.get(stuId);
if (st != null) {
System.out.println("学生:" + st.name);
}
}
}
/**
* 删除
*/
public void testRemove() {
Scanner console = new Scanner(System.in);
while (true) {
System.out.println("请输入要删除学生的ID:");
String studentId = console.next();
Student st = students.get(studentId);
if (st == null) {
System.out.println("该学生ID不存在");
continue;
}
students.remove(studentId);
System.out.println("成功删除学生:" + st.name);
break;
}
}
/**
* 通过entrySet方法遍历Map
*/
public void testEntrySet() {
Set<Entry<String, Student>> entrySet = students.entrySet();
System.out.println("总共有" + students.size() + "个学生");
for (Entry<String, Student> entry : entrySet) {
System.out.println("key值为:" + entry.getKey());
System.out.println("对应的value为:" + entry.getValue().name);
}
}
/**
* 修改
*/
public void testModify() {
System.out.println("请输入要修改的学生ID");
Scanner console = new Scanner(System.in);
while (true) {
String studentId = console.next();
Student st = students.get(studentId);
if (st == null) {
System.out.println("该学生ID不存在");
continue;
}
System.out.println("当前学生ID,所对应的学生为" + st.name);
System.out.println("请输入新的学生的姓名:");
String studentName = console.next();
students.put(studentId, new Student(studentId, studentName));
System.out.println("修改成功");
break;
}
} public static void main(String[] args) {
MapTest mt = new MapTest();
mt.testPut();
mt.testKeySet();
mt.testRemove();
mt.testEntrySet();
mt.testModify();
mt.testEntrySet();
}
}
执行结果:
输入学生ID: 输入学生姓名:
Tom
成功添加学生:Tom
输入学生ID: 输入学生姓名:
Jack
成功添加学生:Jack
输入学生ID: 输入学生姓名:
Lucy
成功添加学生:Lucy
总共有3个学生
学生:Tom
学生:Jack
学生:Lucy
请输入要删除学生的ID: 该学生ID不存在
请输入要删除学生的ID: 成功删除学生:Lucy
总共有2个学生
key值为:
对应的value为:Tom
key值为:
对应的value为:Jack
请输入要修改的学生ID
2
当前学生ID,所对应的学生为Jack
请输入新的学生的姓名:
Lisa
修改成功
总共有2个学生
key值为:1
对应的value为:Tom
key值为:2
对应的value为:Lisa
Java—集合框架Map的更多相关文章
- java集合框架——Map
一.概述 1.Map是一种接口,在JAVA集合框架中是以一种非常重要的集合.2.Map一次添加一对元素,所以又称为“双列集合”(Collection一次添加一个元素,所以又称为“单列集合”)3.Map ...
- Java集合框架——Map接口
第三阶段 JAVA常见对象的学习 集合框架--Map集合 在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息.今天我们所 ...
- Java集合框架Map接口
集合框架Map接口 Map接口: 键值对存储一组对象 key不能重复(唯一),value可以重复 常用具体实现类:HashMap.LinkedHashMap.TreeMap.Hashtable Has ...
- JAVA集合框架 - Map接口
Map 接口大致说明(jdk11): 整体介绍: 一个将键映射到值的(key-value)对象, 键值(key)不能重复, 每个键值只能影射一个对象(一一对应). 这个接口取代了Dictionary类 ...
- java集合框架map
Map<K,V> K key V value Map集合:该集合存储键值对.一对一对往里存,而且要保证键的唯一性. 1,添加. 2,删除. 3,判断. 4,获取. Map |--Hasht ...
- Java集合框架—Map
Map集合:该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 1,添加. put(K key, V value) putAll(Map<? extends K,? extends V& ...
- Java集合框架List,Map,Set等全面介绍
Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I] +--java.util.ArrayList [C] +- ...
- Java集合框架之map
Java集合框架之map. Map的主要实现类有HashMap,LinkedHashMap,TreeMap,等等.具体可参阅API文档. 其中HashMap是无序排序. LinkedHashMap是自 ...
- 【JAVA集合框架之Map】
一.概述.1.Map是一种接口,在JAVA集合框架中是以一种非常重要的集合.2.Map一次添加一对元素,所以又称为“双列集合”(Collection一次添加一个元素,所以又称为“单列集合”)3.Map ...
随机推荐
- Hibernate学习笔记(四)—— 表与表的关系
一.一对多|多对一 1.1 关系表达 1.1.1 表中的表达 建表原则:在多的一方创建外键指向一的一方的主键. 1.1.2 实体中的表达 [客户实体] public class Customer { ...
- python学习之路---day18--反射
一:isinstance,type,issubclass 001:内置函数:isinstance() class Base: pass class Foo(Base): pass class Bar ...
- P2048 [NOI2010]超级钢琴
传送门 考虑维护前缀和 $sum[i]$ 那么对于每一个位置 $i$ ,左端点为 $i$ 右端点在 $[i+L-1,i+R-1]$ 区间的区间最大值容易维护 维护三元组 $(o,l,r)$ ,表示左端 ...
- 查找表 219.Contains Duplicate(2),217 Contain Duplicate, 220(3)
思路:滑动窗口(长度为k+1)看这个窗口里的是否有两个元素的值相同.加查找表. //时间:O(n) //空间:O(k) class Solution { public: bool containsNe ...
- PHP sprintf() 函数
PHP sprintf() 函数 先说下为什么要写这个函数的前言,这个是我在微信二次开发的一个token验证文档也就是示例文档看到的一个函数,当时非常不理解,于是查了百度,但是很多结果都很笼统,结果也 ...
- Mercedes BENZ C5 SD Connect Xentry Tab Kit Technical Support
Why MB Star Diagnostic tool is so well-received by thousands of users, its technology and quality is ...
- APP在用户设备发生crash,应该怎么修复
Crash原因 Crash原因有共性,归纳起来有: 内存管理错误 程序逻辑错误 SDK错误 (部署版本< 编译版本) 主线程阻塞 内存管理错误 内存管理是iPhone开发所要掌握的最基本问题, ...
- 通过Qt从URL下载文件
示例1: 通过Qt自带的例子学习,位置:[安装盘符]:\Qt\Qt5.1.1\5.1.1\Src\qtbase\examples\network\download 示例2: 通过Qt的文档,位置: ...
- Ba Gua Zhen
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5544 学习链接:https://www.cnblogs.com/qscqesze/p/4902518. ...
- windows 系统 python3.5安装 lxml 库
有个提示uable find vc***,的错误,如果按照修改python脚本的方法会发现还需要安装VS,安装好了还不一定可以解决问题. 费了半天劲,结合网络上部分信息终于找到了解决方案: 1.打开文 ...