day004-Map类
1、Map集合概述
Map是一个接口,只要是实现了该接口的类就是一个双列集合。
双列集合就是每次存储元素时需要存储两个元素的集合。
这两个元素称为键值对, Key Value ==>映射关系
特点:键必须是唯一的,只可以重复。
1.1 Map集合常用实现类
HashMap:底层是哈希表
LinkedHashMap:底层是哈希表 + 链表
Hashtable: 已经过时了,线程安全的,效率低,被HashMap取代了
1.2Map常用方法:
a)V put(K key, V value) //存储键值对
如果键存在,则使用新值代替旧值,返回旧值
如果键不存在,则直接存储键值对,返回null
b)V get(K key) //取值
如果键存在,返回值。如果键不存在,则返回null
c)V remove(K key) //删除
int size() //集合个数
void clear() //清空
boolean containsKey(K key) //包含键
boolean isEmpty() //是否为空
1.3 Map集合的遍历方式:
不能直接使用增强for或迭代器遍历
Map集合的遍历方式:
1、通过键找值
2、通过entrySet()获取entrySet
每一个键值对会封装成一个Entry对象
常用方法:
Set<K> keySet() //获取键集合
Set<Map.Entry<K,V>> entrySet() //获取Entry集合
1.4 LinkedHashMap
继承HashMap, 能够保证存取顺序一致。
2. 练习
2.1 利用键盘录入,输入一个字符串,统计该字符串中各个字符的数量
*如用户输入字符串:"helloworld java",程序输出结果:h(1)e(1)l(3)o(2) (2)w(1)r(1)d(1)j(1)a(2)v(1)
*注:输出结果不要求顺序一致
a)操作步骤描述
1. 创建键盘输入对象
2. 使用nextLine从键盘中读取一行内容
3. 将字符串转换成字符数组
4. 创建map集合,用来存放字符:key是字符 value是字符出现的个数
5. 遍历字符数组
6. 拿到每个字符,去map中查看是否有保存对应的次数
7. 如果这个字符没有保存次数,就设置为1次
8. 如果这个字符有保存次数,就设置为原来的次数+1次
9. 创建字符串缓冲区对象
10. 按题目要求拼接字符串
11. 输出结果
b)代码实现
package com.yangzhihui.level02.test04; import java.util.*;
import java.util.Map.Entry; public class HashMapDemo11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串:");
String inputStr = sc.nextLine(); //将字符串转成字符数组
char[] charArray = inputStr.toCharArray(); Map<Character, Integer> map = new LinkedHashMap<>(); for(char ch : charArray){
if(map.get(ch) == null){
map.put(ch, 1);
}
else {
int value = map.get(ch);
map.put(ch, value+1);
}
} Set<Entry<Character, Integer>> entrySet = map.entrySet();
for(Entry<Character, Integer> entry : entrySet){
char key = entry.getKey();
int value = entry.getValue(); System.out.print(key + "(" +value + ")");
} }
}
day004-Map类的更多相关文章
- 探究Java中Map类
Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map---实现Map Map.Entry--Map的内部 ...
- 关于 Go 中 Map 类型和 Slice 类型的传递
关于 Go 中 Map 类型和 Slice 类型的传递 Map 类型 先看例子 m1: func main() { m := make(map[int]int) mdMap(m) fmt.Printl ...
- ArcGIS API for JavaScript 入门教程[5] 再讲数据——Map类之底图与高程
[回顾]前4篇交代了JsAPI的背景.资源如何获取,简介了数据与视图分离的概念与实现,剖析了页面的大骨架. 这篇开始,讲Map类. 转载注明出处,博客园/CSDN/B站/知乎:秋意正寒 目录:http ...
- Map类
Map类 方法 方法名 返回类型 说明 addLayer(layer, index?) layer 增加一个esri图层到map中,示例: var baseMapLayer = new ArcGIST ...
- map 类简介和例程
一.标准库的map类型 使用map得包含map类所在的头文件 template < class Key, class Type, class Traits = less<Key>, ...
- Java Map类常用方法
关于Map集合中常用的方法: void clear(); 清空Map boolean containsKey(Object key); 判断Map中是否包含这样的key boolean contain ...
- 【总结整理】arcgis js api的Map类
关于ArcGis for javascrept之Map类 ArcGis for javascrept_ESRI_Map类: 1. 构造方法:esri.Map(); 参数: extent 如果设置 ...
- Eigen库学习---Map类
Eigen中定义了一系列的vector和matrix,相比copy数据,更一般的方式是复用数据的内存,将它们转变为Eigen类型.Map类很好地实现了这个功能. Map定义 Map(PointerAr ...
- Leaflet:Map类属性及方法
1.初始化 L.map(<String> id , options ?) //用地图div的id创建 L.map(<HTMLElement>el , options?) //用 ...
- ArcGIS API for JavaScript 入门教程[6] 再讲数据——Map类之可操作图层
[回顾]上篇交代了Map是各种图层(不管是实际上的图层还是由图层构成的对象)的容器,是数据的容器,并不作显示(由视图类绘制).并重点讲解了由图层构成的复杂图层——高程属性ground和底图属性base ...
随机推荐
- libxml2 安装及使用
https://gitlab.gnome.org/GNOME/libxml2/ ftp://xmlsoft.org/libxml2/libxml2-2.9.1.tar.gz /configuremak ...
- composer.json 配置设置
配置文件的值为 key:val 必须双引号包裹 一.配置文件 名字 name包名称由用户名名称和仓库名称组成包版本限制来请求Monolog软件包 1.0.*.这意味着1.0开发分支中的任何版本,或大于 ...
- C语言风格字符串的概念、定义、输入字符串、输出字符串
字符串: C语言中最有用.最重要的数据类型之一. 字符串:是以\0字符结尾的char类型数组.所以可以把数组和指针知识应用于字符串. 如何在程序定义字符串: 1.字符串字面量 用双引号括起来的内容称为 ...
- C语言常用字符串函数总结
ANSI C中有20多个用于处理字符串的函数: 注意:const 形参使用了const限定符,表示该函数不会改变传入的字符串.因为源字符串是不能更改的. strlen函数: 函数原型:unsigned ...
- Ubuntu系统中连接TFS的Git地址注意事项
在Ubuntu中安装Git后,配置远程Git服务器地址,如果是TFS的Git仓库地址,则需要使用IP地址,否则可能出现识别不出来的问题; 再者,如果你想要在Ubuntu的浏览中访问TFS的Git仓库U ...
- Oracle 树形SQL语句,SYS_CONNECT_BY_PATH 函数
转一个SYS_CONNECT_BY_PATH 函数的例子.推断原表应该是这样: Child Parent ------------------------ ...
- JavaScript中使用ActiveXObject操作本地文件夹的方法
转载地址 http://www.jb51.net/article/48538.htm 在Windows平台上, js可以调用很多Windows提供的ActivexObject,本文就使用js来实 ...
- 移动测试之appium+python 环境安装(一)
准备工作 一.Python安装 下载地址 及环境变量配置 注意:安装时候记得勾选上Add python.exe to Path.这可以省略环境变量配置. 如果没有勾选,安装下边操作 找到path环境变 ...
- c++ primer 中讲的顶层const 和 底层 const 理解
c++ primer 中讲的 顶层const 和 底层 const 以前没搞懂的顶层const和底层const,这次看了后感觉明白了. 首先,const是一个限定符,被它修饰的变量的值不能改 ...
- DTCMS 网站管理系统
dtcms适合开发一些简单小型网站 开发的过程中遇见了各种问题,下面总结下我遇见的问题 1.遇见提示未开启生成静态功能 在系统设置里面将“伪URL重写”为“生成静态”可以解决 2.在生成静态页面的时候 ...