在之前的文章我们介绍了一下 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. Java实现 洛谷 采药

    题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:" ...

  2. Java实现 LeetCode 567 字符串的排列(滑动窗口,处理区间内的字符数量)

    567. 字符串的排列 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列. 换句话说,第一个字符串的排列之一是第二个字符串的子串. 示例1: 输入: s1 = " ...

  3. Java实现 蓝桥杯VIP 算法训练 猴子分苹果

    问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一 ...

  4. SQK Server实现 LeetCode 175 组合两个表

    175. 组合两个表 SQL架构 表1: Person +-------------+---------+ | 列名 | 类型 | +-------------+---------+ | Person ...

  5. Java实现 LeetCode 53 最大子序和

    53. 最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 ...

  6. TZOJ 车辆拥挤相互往里走

    102路公交车是crq经常坐的,闲来无聊,他想知道最高峰时车上有多少人,他发现这辆车只留一个门上下人,于是他想到了一个办法,上车时先数一下车上人员数目(crq所上的站点总是人不太多),之后就坐在车门口 ...

  7. webpack从什么都不懂到入门

    前言 这篇文章是自己在整理webpack相关的东西时候突发奇想,想总结自己所学知识,也希望能够帮助想学习webpack的同学们,都是入门级别的,大佬请出门右转. 本文的webpack基于webpack ...

  8. 移除VS解决方案中的TFS版本控制

    项目每次会弹出提示 正在打开的解决方案已绑定到以下 Azure DevOps Server 上的源代码管理: xxxxx.是否要联系此服务器以尝试启用源代码管理集成? 移除VS解决方案中的TFS版本控 ...

  9. hibernate中的映射

    hibernate中的映射是指Java类和数据库表中的属性来进行关联,然后通过类来操作数据库中,这就是简单的映射.

  10. 解Bug之路-记一次JVM堆外内存泄露Bug的查找

    解Bug之路-记一次JVM堆外内存泄露Bug的查找 前言 JVM的堆外内存泄露的定位一直是个比较棘手的问题.此次的Bug查找从堆内内存的泄露反推出堆外内存,同时对物理内存的使用做了定量的分析,从而实锤 ...