• 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. JavaWeb学习笔记(四)—— response

    一.response概述 response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse.在客户端发出每个请求时,服 ...

  2. python大作业-图书管理系统

    #缺少循环执行和错误处理 #add()函数 添加了循环执行 #错误处理:regist()函数 登录和退出选择的时候添加了错误处理 import sys import importlib importl ...

  3. Android Studio 常用技巧

    1.在控制台输出语句方法 //在控制台输出语句 System.out.println("like"); //方式1 Log.d("002","lind ...

  4. 记一个SpringBoot中属性注入失败的问题Consider defining a bean of type ''' in your configuration

    今天遇到的一个问题: 代码检查了好几次,都没有错误,但是启动时就会报错Consider defining a bean of type ''' in your configuration. 启动类在c ...

  5. C# 利用Powershell获取网络相关信息

    利用Get-NetAdapter获取信息 Get-NetAdapter 参考链接:https://docs.microsoft.com/en-us/powershell/module/netadapt ...

  6. date +%F时间日期

    date  +%Y -%m-%d   年月日 date  +%T   显示时间   HMS几点几分几秒 -%H  为小时 %w  周几 date   -d   “-1day”   一天之前 date  ...

  7. google风格

    复制一下代码即可: <?xml version="1.0" encoding="UTF-8" standalone="no"?> ...

  8. 重拾简单的linux指令之info 【转】

    info命令 可以利用该命令获取帮助 1. 语法格式:info <command> 2. 语法简述: 类似于man命令的获取帮助信息,比较于man命令更容易读.是以网页的结构来显示内容.而 ...

  9. js判断文件是否存在的方法

    在做电力监控项目的时候,有一个需求就是左右布局的框架,点击左边的图形文件地址,然后去文件夹中找到文件,再在右边出现对应的图形文件,但是有些文件可能是配置的时候有问题,找不到文件,所以js需要判断,以下 ...

  10. 《X86汇编语言:从实模式到保护模式》读书笔记之引言

    有幸结识了<X86汇编语言:从实模式到保护模式>一书.我觉得这本书非常好,语言活泼,通俗易懂,源码丰富,受益匪浅.读罢一遍,意犹未尽.于是打算再读一遍,并把自己的读书所学总结成笔记,一来给 ...