Map以键值对的形式存储数据,其中Map.entry,是Map的内部类,它用来描述Map中的键值对。Map是一个接口,HashMap是他的一个实现类

Map中有几个重要的方法:

get(Object key);//获取给key的值

put(Object key,Object value);//该方法会将原先key所对应的键值对覆盖掉,即可以使用该方法来修改Map中的值

containsKey(Object key);//是否包含某个元素。通过配合get和put方法,来实现匹配并修改Map中的元素

Collection容器中包含Set和List接口,Set中又包含HashSet,List中包含LinkedList和ArrayList;单独的Map接口中只有HashMap。

java.util 中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List 和 Map。 List的具体实现包括 ArrayList和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List适用于按数值索引访问元素的情形,其中的数据有顺序且可以重复(有顺序即提供get(i)的索引方法)。而Set中数据无顺序且不可以重复。

重点:Map遍历

  迭代Map中的元素不存在直接的方法。如果要迭代Map中的元素,必须首先获得Map 的“视图”。

返回视图的Map方法。通过这些方法可以遍历Map元素,也可以删除Map中的元素。

(1)entrySet() :返回所有键值对

返回 Map中所包含映射的 Set视图。 Set 中的每个元素都是一个 Map.Entry对象,可以使用 getKey()和 getValue()方法(还有一个 setValue()方法)访问后者的键元素和值元素

(2)keySet() :返回所有键

返回 Map中所包含键的 Set 视图。删除 Set中的元素还将删除 Map中相应的映射(键和值)

(3)values() :返回所有值

返回 map中所包含值的 Collection视图。删除 Collection中的元素还将删除 Map中相应的映射(键和值)

用一个华为上机题作为例子,就明白了

题目是:手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。提示(可以用Map)

/**
* 手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。提示(可以用Map)
* 实例:
* 输入:aaabbbccc
* 输出:
* a 3
* b 3
* c 3
* Created by fanyukai on 2018\3\8 0008.
*/
public class MapJava {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入字符串");
String str = scan.next();
Map<Character,Integer> map=countChar(str); //这里我采用增强for循环来遍历Map集合
for (Map.Entry<Character,Integer> entry : map.entrySet()){
System.out.println(entry.getKey()+":"+entry.getValue());
}
} private static Map<Character,Integer> countChar(String str) {
int i=0;
Map<Character,Integer> map = new HashMap<Character,Integer>();
//这里利用了HashMap集合的特性,put方法放入键值对时,若key值相同,那么原先key对应的值将会被覆盖
while (i < str.length()){
if(!map.containsKey(str.charAt(i))){
map.put(str.charAt(i),1);
}else{
map.put(str.charAt(i),map.get(str.charAt(i))+1);
}
i++;
}
return map;
}
}

结果截图:

这道问题主要考的是:Map集合的常用方法(put,get,containsKey),Map集合如何遍历(必须要获得视图entrySet,并且定义对象Map.Entry)

java基础——Map集合的更多相关文章

  1. java基础-Map集合

    java基础-Map集合 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Map集合概述 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它 ...

  2. Java基础知识:Java实现Map集合二级联动1

    Java实现Map集合二级联动 Map集合可以保存键值映射关系,这非常适合本实例所需要的数据结构,所有省份信息可以保存为Map集合的键,而每个键可以保存对应的城市信息,本实例就是利用Map集合实现了省 ...

  3. 第6节:Java基础 - 三大集合(上)

    第6节:Java基础 - 三大集合(上) 本小节是Java基础篇章的第四小节,主要介绍Java中的常用集合知识点,涉及到的内容包括Java中的三大集合的引出,以及HashMap,Hashtable和C ...

  4. 备战金三银四!一线互联网公司java岗面试题整理:Java基础+多线程+集合+JVM合集!

    前言 回首来看2020年,真的是印象中过的最快的一年了,真的是时间过的飞快,还没反应过来年就夸完了,相信大家也已经开始上班了!俗话说新年新气象,马上就要到了一年之中最重要的金三银四,之前一直有粉丝要求 ...

  5. java基础技术集合面试【笔记】

    java基础技术集合面试[笔记] Hashmap: 基于哈希表的 Map 接口的实现,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键(除了不同步和允许使用 null 之外,Ha ...

  6. Java基础之 集合体系结构(Collection、List、ArrayList、LinkedList、Vector)

    Java基础之 集合体系结构详细笔记(Collection.List.ArrayList.LinkedList.Vector) 集合是JavaSE的重要组成部分,其与数据结构的知识密切相联,集合体系就 ...

  7. JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...

  8. Java基础知识:Java实现Map集合二级联动2

    2. 定义获取省份的方法,创建一个Map集合,将上一步得到的映射集合赋值给它,使用Map集合的keySet()方法获取该集合中的所有键对象组成的Set 集合,即为省分集合,创建一个Object型一维数 ...

  9. java基础之集合:List Set Map的概述以及使用场景

    本文的整体思路以及部分文字来源:来源一 和 来源二 Java集合类的基本概念: 首先大家要明白集合为什么会出现: 在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的一个很好的选择,前提是 ...

随机推荐

  1. solidity 学习笔记(7)内联汇编

    为什么要有内联汇编? //普通循环和内敛汇编循环比较 pragma solidity ^0.4.25; contract Assembly{ function nativeLoop() public ...

  2. 洛谷P3327 [SDOI2015]约数个数和(莫比乌斯反演)

    传送门 公式太长了……我就直接抄一下这位大佬好了……实在懒得打了 首先据说$d(ij)$有个性质$$d(ij)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1]$$ 我们所求的答案为$ ...

  3. Java IO 输入和输出流

    数据流是指一组有顺序的,有起点和终点的字节集合. 最初的版本中,java.io 包中的流只有普通的字节流,即以 byte 为基本处理单位的流.字节流用来读写 8 位的数据,由于不会对数据做任何转换,因 ...

  4. 关于表格——增加删除行,鼠标选定(利用JavaScript)

    涉及到的知识点: 1.onmouseover,onmouseout 2.dom getElementByTagName 3.新建节点元素createElement; <!DOCTYPE html ...

  5. GridSearchCV.grid_scores_和mean_validation_score报错

    目录 GridSearchCV.grid_scores_和mean_validation_score报错 0. 写在前面 1. 问题描述和解决过程 2. 不想比比直接看结果部分 GridSearchC ...

  6. 从各处收集的switch语句

    重构之重复代码: 1.(重复代码是)语义一致的逻辑 反例:语义一致的逻辑产生了多个实体 缺点:如果你为语义一致的逻辑产生了多个实体,那么当需要修改这个逻辑时,你必须保证同时修改所有的实体,并确保它们是 ...

  7. github版本库使用详细教程(命令行及图形界面版)

    Git是一个分布式的版本控制系统,作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户.随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选 ...

  8. Codeforces Round #561 (Div. 2) A. Silent Classroom

    链接:https://codeforces.com/contest/1166/problem/A 题意: There are nn students in the first grade of Nlo ...

  9. Exploring refit, an automatic type-safe REST library for .NET Standard

    自动类型安全的.NET标准REST库refit   在SCOTT HANSELMAN 博客上看到一个好东西<Exploring refit, an automatic type-safe RES ...

  10. ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”

    ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面” DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求 ...