• 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的更多相关文章

  1. java集合框架——Map

    一.概述 1.Map是一种接口,在JAVA集合框架中是以一种非常重要的集合.2.Map一次添加一对元素,所以又称为“双列集合”(Collection一次添加一个元素,所以又称为“单列集合”)3.Map ...

  2. Java集合框架——Map接口

    第三阶段 JAVA常见对象的学习 集合框架--Map集合 在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息.今天我们所 ...

  3. Java集合框架Map接口

    集合框架Map接口 Map接口: 键值对存储一组对象 key不能重复(唯一),value可以重复 常用具体实现类:HashMap.LinkedHashMap.TreeMap.Hashtable Has ...

  4. JAVA集合框架 - Map接口

    Map 接口大致说明(jdk11): 整体介绍: 一个将键映射到值的(key-value)对象, 键值(key)不能重复, 每个键值只能影射一个对象(一一对应). 这个接口取代了Dictionary类 ...

  5. java集合框架map

    Map<K,V> K key V value Map集合:该集合存储键值对.一对一对往里存,而且要保证键的唯一性. 1,添加. 2,删除. 3,判断. 4,获取. Map |--Hasht ...

  6. Java集合框架—Map

    Map集合:该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 1,添加. put(K key, V value)  putAll(Map<? extends K,? extends V& ...

  7. Java集合框架List,Map,Set等全面介绍

    Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I]   +--java.util.ArrayList [C]   +- ...

  8. Java集合框架之map

    Java集合框架之map. Map的主要实现类有HashMap,LinkedHashMap,TreeMap,等等.具体可参阅API文档. 其中HashMap是无序排序. LinkedHashMap是自 ...

  9. 【JAVA集合框架之Map】

    一.概述.1.Map是一种接口,在JAVA集合框架中是以一种非常重要的集合.2.Map一次添加一对元素,所以又称为“双列集合”(Collection一次添加一个元素,所以又称为“单列集合”)3.Map ...

随机推荐

  1. POJ_1703 Find them, Catch them 【并查集】

    一.题面 POJ1703 二.分析 需要将并查集与矢量法则相结合.par数组用以记录父节点,rank用以记录与父节点的关系.如题意,有两种关系,设定0是属于同一个帮派,1表示不属于同一个帮派. 运用并 ...

  2. 1149 Dangerous Goods Packaging (25 分)

    When shipping goods with containers, we have to be careful not to pack some incompatible goods into ...

  3. 1076 Wifi密码 (15 分)

    下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1:B-2:C-3:D-4:请同学们自己作答,每两日一 ...

  4. [转] Java运行时动态生成class的方法

    [From] http://www.liaoxuefeng.com/article/0014617596492474eea2227bf04477e83e6d094683e0536000 廖雪峰 / 编 ...

  5. nodejs下载器,通过chrome代理下载http资源

    var config={ //不想访问的东西,节约流量 "404":[ "http://qidian.qpic.cn/qdbimg" ], //奇数为需要下载的 ...

  6. day_01 python基础 基本数据类型 if条件

    1. python简介 解释型,弱类型,高级开发语言2. 第一个python程序编写   1. 标点符号(英文)   2. 编码格式(utf-8)3.变量   把程序运行产生的中间值储存起来,方便后面 ...

  7. BeautifulSoup库应用实例

    获取博客园本人的积分排名数据: 1. 抓包获取积分排名数据返回接口:http://www.cnblogs.com/belle-ls/mvc/blog/sidecolumn.aspx?blogApp=b ...

  8. 关于工具类静态方法调用@Autowired注入的service类问题

    @Component //此处注解不能省却(0) 1 public class NtClient { 2 /** 3 * 日志 4 */ 5 private static String clazzNa ...

  9. python 生成嵌套字典

    import collections import json tree=lambda:collections.defaultdict(tree) some_dict=tree() some_dict[ ...

  10. MHA 高可用架构部署

    一, MHA 介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公 ...