在之前的文章我们介绍了一下 Java 中的  集合框架中的Collection,本章我们来看一下 Java 集合框架中的 Map。

Map 接口定义的集合又称查找表,用于存储所谓“Key-Value”映射对,Key 可以看成是 Value 的索引,作为 Key 的对象在集合中不可以重复。

根据内部数据结构的不同,Map 接口有多种实现类,其中常用的有内部为 hash 表实现的 HashMap 和内部为排序二叉树实现的 TreeMap,在开发过程中我们常用到的是 Hashmap。

 import java.util.HashMap;
import java.util.Map; /**
* java.util.Map
* Map 看起来像是一个多行两列的表格
* 以 key-value 对的形式存放元素
* 以 Map 中 key 不允许重复(重复是依靠 key 的 equals 判断)
* 常用的实现类为 HashMap
*/
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
/**
* V put(K k, V v)
* 将给定的 key-value 对存入 Map
* 顺序不按照给定的顺序排
* 由于 Map 要求 key 不允许重复,所以使用 Map
* 已有的 key 存入一个新的 value 时的操作是
* 替换 value,那么返回值为该 key 原来对应的 value,
* 若是一个新的 key,则返回为 null
*/
map.put("语文", 90);
map.put("数学", 93);
map.put("英语", 80);
map.put("化学", 99);
System.out.println(map); // {数学=93, 化学=99, 语文=90, 英语=80} Integer value = map.put("物理", 60); // 新 key,返回 null
System.out.println(value); // null
System.out.println(map); // {物理=60, 数学=93, 化学=99, 语文=90, 英语=80} value = map.put("语文", 88); // key 相同替换原来的 value
System.out.println(value); //
System.out.println(map); // {物理=60, 数学=93, 化学=99, 语文=88, 英语=80} /**
* V get(K k)
* 根据给定的 key 获取对应的 value
* 若当前 Map 中没有给定的 key,则返回为 null
*/
value = map.get("数学");
System.out.println(value); //
value = map.get("生物");
System.out.println(value); // null /**
* V remove(K k)
* 删除给定的 key 所对应的 key-value 对
* 返回值为被删除的 key-value 对中的 value
*/
value = map.remove("数学");
System.out.println(value); //
System.out.println(map); // {物理=60, 化学=99, 语文=88, 英语=80}
}
}

在上面的代码中,我们实现了 Map 的基本操作增删改查。接下来我们再来看一下 Map 的循环遍历:

 import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set; /**
* 遍历 Map
* 遍历 Map 有三种方式:
* 遍历所有的 key
* 遍历所有的 key-value 对
* 遍历所有的 value(相对不常用)
*/
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("语文", 90);
map.put("数学", 93);
map.put("英语", 80);
map.put("化学", 99);
System.out.println(map.size()); //
System.out.println(map); // {数学=93, 化学=99, 语文=90, 英语=80} /**
* 遍历所有的 key
* Set<K> keySet()
* 该方法会将当前 Map 中所有的 key 存入一个Set 集合后返回
* 那么遍历该集合就等于遍历了所有的 key
*/
Set<String> keySet = map.keySet();
for (String string : keySet) {
System.out.println(string); // 数学 化学 语文 英语
} /**
* 遍历每一组键值对
* Map 中每一组键值对都是由 Map 的内部类:
* java.util.Map.Entry 的一个实例表示的
* Entry 有两个方法:getKey,getValue
* 可以分别获取这一组键值对中的 key 与 value
*
* set<Entry> entrySet
* 该方法会将 Map 中每一组键值对(Entry 实例)
* 存入一个 Set 集合后返回
*/
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
for (Map.Entry<String, Integer> entry : entrySet) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + ": " + value); // 数学: 93, 化学: 99, 语文: 90, 英语: 80
} /**
* 遍历所有的 value
* Collection values
* 该方法会将当前 Map 中所有的 value 存入一个集合后返回
*/
Collection<Integer> values = map.values();
for (Integer value : values) {
System.out.println(value); // 93 99 90 80
}
}
}

在上面的代码中,我们实现了 Map 的遍历循环。

Java 从入门到进阶之路(二十七)的更多相关文章

  1. Java 从入门到进阶之路(十七)

    在之前的文章我们介绍了一下 Java 中类的内部类,本章我们来看一下 Java 中的正则表达式. 在任何一种语言中,都绕不开正则表达式,而且大部分语言的正则表达式都有预定义的字符集,且预定义的字符集也 ...

  2. Java 从入门到进阶之路(二十)

    在之前的文章我们介绍了一下 Java 中的包装类,本章我们来看一下 Java 中的日期操作. 在我们日常编程中,日期使我们非常常用的一个操作,比如读写日期,输出日志等,那接下来我们就看一下 Java ...

  3. Java 从入门到进阶之路(二十三)

    在之前的文章我们介绍了一下 Java 中的  集合框架中的Collection 的迭代器 Iterator,本章我们来看一下 Java 集合框架中的Collection 的泛型. 在讲泛型之前我们先来 ...

  4. Java 从入门到进阶之路(二)

    之前的文章我们介绍了一下用 IDEA 编辑器创建一个 Java 项目并输出 HelloWorld,本章我们来看一下 Java 中的变量和基本数据类型. 在这之前我们先来看一下 Java 中的关键字,这 ...

  5. Java 从入门到进阶之路(十二)

    在之前的文章我们介绍了一下 Java 类的重写及与重载的区别,本章我们来看一下 Java 类的 private,static,final. 我们在之前引入 Java 类概念的时候是通过商场收银台来引入 ...

  6. Java 从入门到进阶之路(二十一)

    在之前的文章我们介绍了一下 Java 中的日期操作,本章我们来看一下 Java 集合框架中的Collection. 早在 Java 2 中之前,Java 就提供了特设类.比如:Dictionary, ...

  7. Java 从入门到进阶之路(二十二)

    在之前的文章我们介绍了一下 Java 中的  集合框架中的Collection 中的一些常用方法,本章我们来看一下 Java 集合框架中的Collection 的迭代器 Iterator. 当我们创建 ...

  8. Java 从入门到进阶之路(二十四)

    在之前的文章我们介绍了一下 Java 中的  集合框架中的Collection 的泛型,本章我们来看一下 Java 集合框架中的Collection 的子接口 List. Collection 接口有 ...

  9. Java 从入门到进阶之路(二十五)

    在之前的文章我们介绍了一下 Java 中的  集合框架中的Collection 的子接口 List的 增删改查和与数组间相互转换的方法,本章我们来看一下 Java 集合框架中的Collection 的 ...

  10. Java 从入门到进阶之路(二十六)

    在之前的文章我们介绍了一下 Java 中的  集合框架中的Collection 的子接口 List,本章我们来看一下 Java 集合框架中的Collection 的子接口 Queue. 在之前我们讲 ...

随机推荐

  1. Entity FrameWork操作数据库完成登陆、列表显示+验证码

    登陆页面 登陆页面的页面结构比较简单,没有写样式. image标签的作用是用来显示验证码. 一般处理程序代码展示 using System; using System.Collections.Gene ...

  2. Java实现 LeetCode 427 建立四叉树

    427. 建立四叉树 我们想要使用一棵四叉树来储存一个 N x N 的布尔值网络.网络中每一格的值只会是真或假.树的根结点代表整个网络.对于每个结点, 它将被分等成四个孩子结点直到这个区域内的值都是相 ...

  3. Java实现 蓝桥杯VIP 算法提高 质数的后代

    算法提高 质数的后代 时间限制:1.0s 内存限制:256.0MB 问题描述 在上一季里,曾提到过质数的孤独,其实从另一个角度看,无情隔膜它们的合数全是质数的后代,因为合数可以由质数相乘结合而得. 如 ...

  4. Java实现洛谷 P1428 小鱼比可爱

    题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个"比可爱"比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只 ...

  5. 【Vlog】Jmeter之使用beanshell将json提取器中的多个值拼接为一个列表

    场景如下: json提取器返回了当前登录用户的所有好友id,然而下一个接口是把好友id拼成一个数组进行传参的,现需将所有的好友ID拼接起来,类似ID1,ID2,ID3......这样 beanshel ...

  6. css如何实现水平垂直居中

    方法 居中元素定宽高固定 PC兼容性 移动端兼容性 absolute + 负margin 是 ie6+, chrome4+, firefox2+ 安卓2.3+, iOS6+ absolute + ma ...

  7. Excel经典教程之一

    照片名称:未命名 照片名称:自动筛选 照片名称:在Excel中字符替换 照片名称:在Excel中直接编辑“宏” 照片名称:在Excel中为导入外部数据 照片名称:在Excel中行列快速转换 照片名称: ...

  8. (六)maven 聚合和继承

    项目目录 my_test 聚合pom <?xml version="1.0" encoding="UTF-8"?> <project xmln ...

  9. CentOS Linux release 7.7.1908 (Core)--rabbitmq用户创建以及相关防火墙端口开启问题

    增加访问用户,默认用户guest只能本地访问. #添加用户 rabbitmqctl add_user 账号 密码 rabbitmqctl add_user admin admin #分配用户标签(ad ...

  10. CSS小功能实现

    1.css实现三角形效果 #prev { display: block; width:; height:; border-bottom: 7px solid #4d4d4f; border-right ...