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 ...
随机推荐
- POJ_1703 Find them, Catch them 【并查集】
一.题面 POJ1703 二.分析 需要将并查集与矢量法则相结合.par数组用以记录父节点,rank用以记录与父节点的关系.如题意,有两种关系,设定0是属于同一个帮派,1表示不属于同一个帮派. 运用并 ...
- 1149 Dangerous Goods Packaging (25 分)
When shipping goods with containers, we have to be careful not to pack some incompatible goods into ...
- 1076 Wifi密码 (15 分)
下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1:B-2:C-3:D-4:请同学们自己作答,每两日一 ...
- [转] Java运行时动态生成class的方法
[From] http://www.liaoxuefeng.com/article/0014617596492474eea2227bf04477e83e6d094683e0536000 廖雪峰 / 编 ...
- nodejs下载器,通过chrome代理下载http资源
var config={ //不想访问的东西,节约流量 "404":[ "http://qidian.qpic.cn/qdbimg" ], //奇数为需要下载的 ...
- day_01 python基础 基本数据类型 if条件
1. python简介 解释型,弱类型,高级开发语言2. 第一个python程序编写 1. 标点符号(英文) 2. 编码格式(utf-8)3.变量 把程序运行产生的中间值储存起来,方便后面 ...
- BeautifulSoup库应用实例
获取博客园本人的积分排名数据: 1. 抓包获取积分排名数据返回接口:http://www.cnblogs.com/belle-ls/mvc/blog/sidecolumn.aspx?blogApp=b ...
- 关于工具类静态方法调用@Autowired注入的service类问题
@Component //此处注解不能省却(0) 1 public class NtClient { 2 /** 3 * 日志 4 */ 5 private static String clazzNa ...
- python 生成嵌套字典
import collections import json tree=lambda:collections.defaultdict(tree) some_dict=tree() some_dict[ ...
- MHA 高可用架构部署
一, MHA 介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公 ...