Java 从入门到进阶之路(二十七)
在之前的文章我们介绍了一下 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 从入门到进阶之路(二十七)的更多相关文章
- Java 从入门到进阶之路(十七)
在之前的文章我们介绍了一下 Java 中类的内部类,本章我们来看一下 Java 中的正则表达式. 在任何一种语言中,都绕不开正则表达式,而且大部分语言的正则表达式都有预定义的字符集,且预定义的字符集也 ...
- Java 从入门到进阶之路(二十)
在之前的文章我们介绍了一下 Java 中的包装类,本章我们来看一下 Java 中的日期操作. 在我们日常编程中,日期使我们非常常用的一个操作,比如读写日期,输出日志等,那接下来我们就看一下 Java ...
- Java 从入门到进阶之路(二十三)
在之前的文章我们介绍了一下 Java 中的 集合框架中的Collection 的迭代器 Iterator,本章我们来看一下 Java 集合框架中的Collection 的泛型. 在讲泛型之前我们先来 ...
- Java 从入门到进阶之路(二)
之前的文章我们介绍了一下用 IDEA 编辑器创建一个 Java 项目并输出 HelloWorld,本章我们来看一下 Java 中的变量和基本数据类型. 在这之前我们先来看一下 Java 中的关键字,这 ...
- Java 从入门到进阶之路(十二)
在之前的文章我们介绍了一下 Java 类的重写及与重载的区别,本章我们来看一下 Java 类的 private,static,final. 我们在之前引入 Java 类概念的时候是通过商场收银台来引入 ...
- Java 从入门到进阶之路(二十一)
在之前的文章我们介绍了一下 Java 中的日期操作,本章我们来看一下 Java 集合框架中的Collection. 早在 Java 2 中之前,Java 就提供了特设类.比如:Dictionary, ...
- Java 从入门到进阶之路(二十二)
在之前的文章我们介绍了一下 Java 中的 集合框架中的Collection 中的一些常用方法,本章我们来看一下 Java 集合框架中的Collection 的迭代器 Iterator. 当我们创建 ...
- Java 从入门到进阶之路(二十四)
在之前的文章我们介绍了一下 Java 中的 集合框架中的Collection 的泛型,本章我们来看一下 Java 集合框架中的Collection 的子接口 List. Collection 接口有 ...
- Java 从入门到进阶之路(二十五)
在之前的文章我们介绍了一下 Java 中的 集合框架中的Collection 的子接口 List的 增删改查和与数组间相互转换的方法,本章我们来看一下 Java 集合框架中的Collection 的 ...
- Java 从入门到进阶之路(二十六)
在之前的文章我们介绍了一下 Java 中的 集合框架中的Collection 的子接口 List,本章我们来看一下 Java 集合框架中的Collection 的子接口 Queue. 在之前我们讲 ...
随机推荐
- Java实现 洛谷 采药
题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:" ...
- Java实现 LeetCode 567 字符串的排列(滑动窗口,处理区间内的字符数量)
567. 字符串的排列 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列. 换句话说,第一个字符串的排列之一是第二个字符串的子串. 示例1: 输入: s1 = " ...
- Java实现 蓝桥杯VIP 算法训练 猴子分苹果
问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一 ...
- SQK Server实现 LeetCode 175 组合两个表
175. 组合两个表 SQL架构 表1: Person +-------------+---------+ | 列名 | 类型 | +-------------+---------+ | Person ...
- Java实现 LeetCode 53 最大子序和
53. 最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 ...
- TZOJ 车辆拥挤相互往里走
102路公交车是crq经常坐的,闲来无聊,他想知道最高峰时车上有多少人,他发现这辆车只留一个门上下人,于是他想到了一个办法,上车时先数一下车上人员数目(crq所上的站点总是人不太多),之后就坐在车门口 ...
- webpack从什么都不懂到入门
前言 这篇文章是自己在整理webpack相关的东西时候突发奇想,想总结自己所学知识,也希望能够帮助想学习webpack的同学们,都是入门级别的,大佬请出门右转. 本文的webpack基于webpack ...
- 移除VS解决方案中的TFS版本控制
项目每次会弹出提示 正在打开的解决方案已绑定到以下 Azure DevOps Server 上的源代码管理: xxxxx.是否要联系此服务器以尝试启用源代码管理集成? 移除VS解决方案中的TFS版本控 ...
- hibernate中的映射
hibernate中的映射是指Java类和数据库表中的属性来进行关联,然后通过类来操作数据库中,这就是简单的映射.
- 解Bug之路-记一次JVM堆外内存泄露Bug的查找
解Bug之路-记一次JVM堆外内存泄露Bug的查找 前言 JVM的堆外内存泄露的定位一直是个比较棘手的问题.此次的Bug查找从堆内内存的泄露反推出堆外内存,同时对物理内存的使用做了定量的分析,从而实锤 ...