Java - 集合 - Map
Map
1、Map实现类:HashMap、Hashtable、LinkedHashMap、TreeMap
- HashMap
- 新增元素/获取元素
1 void contextLoads() {
2 //声明
3 Map<String,Object> hashMapOne=new HashMap<>();
4
5 // .put 添加元素,添加重复的key,不会添加成功,但是会更新key对应的value值
6 hashMapOne.put("name","zhangsan");
7 hashMapOne.put("name","lisi");
8 System.out.println(hashMapOne.get("name")); //输出结果是 lisi(替换了原来的zhangsan)
9
10 // .putIfAbsent key存在时,不覆盖原来key的value值,也不新增这个重复的key
11 hashMapOne.put("age","3");
12 hashMapOne.putIfAbsent("age","10");
13 System.out.println(hashMapOne.get("age")); //输出结果是3,没有被替换
14
15 // .putall 复制,将所有元素从一个HashMap复制到另一个HashMap
16 Map<String,Object> hashMapTwo=new HashMap<>();
17 hashMapTwo.put("age","5");
18 hashMapTwo.put("sex","女");
19 hashMapTwo.putAll(hashMapOne);
20 //hashMapOne中的age覆盖了hashMapTwo原来的age,输出3
21 System.out.println(hashMapTwo.get("age"));
22 //hashMapOne中没有sex,所以输出hashMapTwo原来的sex,女
23 System.out.println(hashMapTwo.get("sex"));
24 //hashMapOne中的name,复制到了hashMapTwo中,输出lisi
25 System.out.println(hashMapTwo.get("name"));
26
27 // .get获取元素上面的输出语句有
28 // .getOrDefault 当key不存在时,设置一个默认值,输出"上海"
29 System.out.println(hashMapOne.getOrDefault("area","上海")); - 遍历元素
void contextLoads() {
//声明
Map<String,Object> hashMapOne=new HashMap<>();
hashMapOne.put("name","zhangsan");
hashMapOne.put("age","25");
hashMapOne.put("area","上海"); //1、使用keySet获取所有的Key,然后遍历
System.out.println("方式1:使用keySet遍历");
for (String key : hashMapOne.keySet()){
System.out.println(key + " " + hashMapOne.get(key));
} //2、使用Map.entrySet获取所有的元素,然后使用iterator遍历
System.out.println();
System.out.println("方式2:通过Map.entrySet使用iterator遍历");
Iterator<Map.Entry<String,Object>> iterator=hashMapOne.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<String, Object> entry = iterator.next();
System.out.println("Key:" + entry.getKey() + ",Value:" + entry.getValue());
} //3、用Map.entrySet获取所有的元素,然后使用foreach循环遍历
System.out.println();
System.out.println("方式3:通过Map.entrySet使用foreach循环遍历");
for (Map.Entry<String, Object> entry : hashMapOne.entrySet()) {
System.out.println("Key:" + entry.getKey() + ",Value:" + entry.getValue());
} //4、直接使用values获取到所有的值,该种方式无法遍历Key
System.out.println();
System.out.println("方式4:使用values遍历,使用这种方式无法遍历Key");
for (Object value : hashMapOne.values()) {
System.out.println(value);
}
}
- 新增元素/获取元素
- HashMap、Hashtable、LinkedHashMap、TreeMap 的区别
- 都实现了Map接口
- 都不允许key重复
| 不同点 | HashMap | Hashtable | LinkedHashMap | TreeMap |
| 排序 | 不排序 | 不排序 | 按插入顺序排序 |
有默认排序
【按照key的字典顺序升序排序】
可自定义排序
|
| null值 |
Key:允许
Value:允许
|
Key:不允许
Value:不允许
|
Key:允许
Value:允许
|
Key:不允许
Value:允许
|
| 线程安全 | 非线程安全 | 线程安全 | 非线程安全 | 非线程安全 |
| 继承的父类 | AbstractMap | Dictionary | HashMap>AbstractMap | AbstractMap |
Java - 集合 - Map的更多相关文章
- Java集合Map接口与Map.Entry学习
Java集合Map接口与Map.Entry学习 Map接口不是Collection接口的继承.Map接口用于维护键/值对(key/value pairs).该接口描述了从不重复的键到值的映射. (1) ...
- Java集合——Map接口
1.定义 Map用于保存存在映射关系<key,value>的数据.其中,key值不能重复(使用equals()方法比较),value值可以重复 2.方法 V put(key,value) ...
- Java集合—Map
简介 Map用户保存具有映射关系的数据,因此Map集合里保存着两组数,一组值用户保存Map里的key,另一组值用户保存Map里的value,key和value都可以是任何引用类型的数据.Map的key ...
- Java集合Map基本方法
jdk1.7 api中的方法摘要: 参考java集合大全图:https://www.cnblogs.com/xkzhangsanx/p/10889114.html Map为所有Map子类的接口.
- java集合——Map
声明:以下内容都是来自网络总结,将会参考很多,没有声明转载来源. 一.Map接口 1.HashMap HashMap和HashTable的区别:http://blog.csdn.net/shohoku ...
- Java集合--Map总结
转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311126 第1部分 Map概括 (01) Map ...
- Java集合-----Map详解
Map与Collection并列存在.用于保存具有映射关系的数据:Key-Value Map 中的 key 和 value 都可以是任何引用类型的数据 Map 中的 ...
- Java集合Map与其子类回顾
接10月12号昨天的笔记,今天继续回顾集合中的Map集合. 一.集合工具操作类Collections 问题:collection和collections的区别? 1.collection是单列集合的顶 ...
- Java集合----Map集合
Map Map 用于保存具有映射关系的数据,因此 Map 集合里保存着两组值,一组值用于保存 Map 里的 Key,另外一组用于保存 Map 里的 Value Map 中的 key 和 value 都 ...
- Java 集合-Map接口和三个子类实现
2017-10-31 22:05:59 Map 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. HashMap是基于散列表实现的,插入.删除和定位元素时间复杂度平均能达到O ...
随机推荐
- Ubuntu使用ipython出现版本不兼容的问题
今天租了一个ECS,然后准备安装了jupyter,准备配置,输入ipython,出现如下报错 ImportError: IPython 7.10+ supports Python 3.6 and ab ...
- Python-Django学习笔记(一)-MTV设计模式
Django是开源的.大而且全的Web应用框架. 它独具特色,采用了MTV设计模式. MTV框架包括:Model(模型).Template(模板)和View(视图) Model(模型):负责业务对象与 ...
- Appium学习2-Appium-desktop的使用
安装: 下载路径:https://github.com/appium/appium-desktop/releases 选择最新的安装包即可. 使用 1.点击打开应用程序,进入到配置项. 2.配置以下信 ...
- bootstrap-datatimepicker插件的使用
1.引入相关的css.js文件(因为是bootstrap的,首先应该引入bootstrap.css和bootstrap.js): <link rel="stylesheet" ...
- nginx 无法启动:bind() to 0.0.0.0:443 failed
bind to 0.0.0.0:443 failed.其实就是443端口被其它程序占用,要结束占用443端口导致nginx不能启动的应用. CMD: 1.查看所有程序使用的端口 netstat -ao ...
- ASP.NET MVC模型绑定1
一.模型绑定原理 模型绑定是指为Controller的Action方法的参数提供值的过程,例如我有一个名为Blog的实体类(准确的说是ViewModel),它有一个名为Title的属性,如果我在VIE ...
- QQ第三方登录(二)
首先我们先来看一下我的目录 Connect2.1 是我们从下载的SDK,内容包含 其他文件在配置之后全部删除了! index.html 是我们点击登陆的页面(以下为html中的代码) <cen ...
- configparser模块简介
https://www.cnblogs.com/plf-Jack/p/11170284.html
- os.getcwd()和os.path.realpath(__file__)的区别
https://blog.csdn.net/xiaminli/article/details/74944580 python中split().os.path.split()函数用法
- linux虚拟机内网突然不通了
之前安装后 内网,外网测试通常的,今天有开发反应es服务不通了 后来到服务器查看了一下,es和同步服务都停了 重新启动,发现同步服务无法启动,网络问题 报错信息“Failed to initiali ...