李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
Java
正文
Java集合Map基础总结
Leefs
2019-12-06 AM
3992℃
2条
# Java集合Map基础总结 ### 前言 Map集合在编程中是很重要的,也是比较基础的,本篇先讲述Map的一些基本概念。 ### 概念 Java中Map是一个接口,它不继承任何其他的接口,可以说它是java中所有Map的顶级父接口。 **Map的性质** Map接口中键和值一一映射。可以通过键来获取值。 Map存储是以k-v键值对的方式进行存储的,是双列的 Map中的key具有唯一性,不可重复 每个key对应的value值是唯一的 > + 给定一个键和一个值,你可以将该值存储在一个Map对象之后,可以通过键来访问对应的值。 > + 当访问的值不存在的时候,方法就会抛出一个`NoSuchElementException`异常。 > + 当对象的类型和Map里元素类型不兼容的时候,就会抛出一个 `ClassCastException`异常。 > + 当在不允许使用Null对象的Map中使用Null对象,会抛出一个`NullPointerException` 异常。 > + 当尝试修改一个只读的Map时,会抛出一个`UnsupportedOperationException`异常。 ### Map集合的方法说明 | 序号 | 方法 | 方法说明 | | ---- | ------------------------------- | ------------------------------------------------------------ | | 1 | void clear( ) | 从此映射中移除所有映射关系(可选操作) | | 2 | boolean containsKey(Object k) | 如果此映射包含指定键的映射关系,则返回 true。 | | 3 | boolean containsValue(Object v) | 如果此映射将一个或多个键映射到指定值,则返回 true。 | | 4 | Set entrySet( ) | 返回此映射中包含的映射关系的 Set 视图。 | | 5 | boolean equals(Object obj) | 比较指定的对象与此映射是否相等。 | | 6 | Object get(Object k) | 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。 | | 7 | int hashCode( ) | 返回此映射的哈希码值。 | | 8 | boolean isEmpty( ) | 如果此映射未包含键-值映射关系,则返回 true。 | | 9 | Set keySet( ) | 返回此映射中包含的键的 Set 视图。 | | 10 | Object put(Object k, Object v) | 将指定的键与值对应起来,并添加到集合中,方法返回值为键所对应的值 | | 11 | void putAll(Map m) | 从指定映射中将所有映射关系复制到此映射中(可选操作)。 | | 12 | Object remove(Object k) | 根据指定的键(key)删除元素,返回被删除元素的值(value)。 | | 13 | int size( ) | 返回此映射中的键-值映射关系数。 | | 14 | Collection values( ) | 返回此映射中包含的值的 Collection 视图。 | ### 常用方法演示 #### 1.添加:`put(K key, V value)`、 `putAll(Map extends K,? extends V> m)` ```java public class MapDemo01 { public static void main(String[] args) { Map
map = new HashMap
(); map.put("zhangfei","三国"); map.put("宋江","水浒"); map.put("贾宝玉","红楼"); map.put("猪八戒","西游记"); System.out.println(map); } } ``` > 运行结果 ```java {zhangfei=三国, 贾宝玉=红楼, 猪八戒=西游记, 宋江=水浒} ``` #### 2.删除:`clear()`、`remove(Object key)` ```java public class MapDemo01 { public static void main(String[] args) { Map
map = new HashMap
(); map.put("zhangfei","三国"); map.put("宋江","水浒"); map.put("贾宝玉","红楼"); map.put("猪八戒","西游记"); System.out.println(map); System.out.println(map.remove("zhangfei")); map.clear(); System.out.println(map); } } ``` > 运行结果 ```java {zhangfei=三国, 贾宝玉=红楼, 猪八戒=西游记, 宋江=水浒} 三国 {} ``` #### 3.判断 > + `containsValue(Object value)` :如果此映射将一个或多个键映射到指定值,则返回 `true` > > + `containsKey(Object key)` : 如果此映射包含指定键的映射关系,则返回 `true` > + `isEmpty()` :如果此映射未包含键-值映射关系,则返回 `true` ```java public class MapDemo01 { public static void main(String[] args) { Map
map = new HashMap
(); map.put("zhangfei","三国"); map.put("liubei","三国"); map.put("宋江","水浒"); map.put("贾宝玉","红楼"); map.put("猪八戒","西游记"); map.put("李林超博客",null); System.out.println(map); System.out.println(map.containsKey("猪八戒")); System.out.println(map.containsValue("三国")); System.out.println(map.isEmpty()); } } ``` > 运行结果 ```java {李林超博客=null, zhangfei=三国, liubei=三国, 贾宝玉=红楼, 猪八戒=西游记, 宋江=水浒} true true false ``` #### 4.获取:`get(Object key)`、`size()`、`values()` 、`entrySet()`、`keySet()` ```java public class MapDemo01 { public static void main(String[] args) { Map
map = new HashMap
(); map.put("zhangfei","三国"); map.put("liubei","三国"); map.put("宋江","水浒"); map.put("贾宝玉","红楼"); map.put("猪八戒","西游记"); map.put("李林超博客",null); System.out.println(map); System.out.println(map.get("liubei")); System.out.println(map.size()); System.out.println(map.values()); System.out.println(map.entrySet()); System.out.println(map.keySet()); } } ``` > 运行结果 ```java {李林超博客=null, zhangfei=三国, liubei=三国, 贾宝玉=红楼, 猪八戒=西游记, 宋江=水浒} 三国 6 [null, 三国, 三国, 红楼, 西游记, 水浒] [李林超博客=null, zhangfei=三国, liubei=三国, 贾宝玉=红楼, 猪八戒=西游记, 宋江=水浒] [李林超博客, zhangfei, liubei, 贾宝玉, 猪八戒, 宋江] ``` ***注意:上方的中括号和大括号的区别。*** #### 5.获取Map集合的方式 > 1. 1.`Set
keySet`:将map中所有的键存入到Set集合。因为set具备迭代器。所以可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。 > > **Map集合的取出原理:将Map集合转成Set集合。在通过迭代器取出。** > > 2. 2.`Set
> entrySet`:将Map集合中的映射关系存入到了Set集合中,而这个关系的数据类型就是:Map.Entry > > Entry其实就是Map中的一个static内部接口。 > > 定义在内部因为只有有了Map集合,有了键值对,才会有键值的映射关系。关系属于Map集合中的一个内部事物。而且该事物在直接访问Map集合中的元素。 Map遍历的集中方案: (1).通过for循环 ```java for(Map.Entry
entry:map.entrySet()){ System.out.println(entry.getKey()+"--->"+entry.getValue()); } ``` (2).通过迭代器 ```java Set set = map.entrySet(); Iterator i = set.iterator(); while(i.hasNext()){ Map.Entry
entry1=(Map.Entry
)i.next(); System.out.println(entry1.getKey()+"=="+entry1.getValue()); } ``` (3).使用`keySet()`迭代 ```java Iterator it=map.keySet().iterator(); while(it.hasNext()){ String key; String value; key=it.next().toString(); value=map.get(key); System.out.println(key+"--"+value); } ``` *附:[参考文章链接](https://www.cnblogs.com/wjk921/p/4918442.html)*
标签:
Java
,
JavaSE
,
持有对象
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/261.html
上一篇
【转载】Java集合Set基础总结
下一篇
持有对象--Map
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
Golang基础
查找
MyBatisX
链表
容器深入研究
Flink
MySQL
Nacos
Scala
Python
Hive
JavaScript
Flume
线程池
Spark Streaming
RSA加解密
Http
人工智能
算法
Spark RDD
ajax
Quartz
FileBeat
散列
Netty
SpringCloudAlibaba
JVM
序列化和反序列化
并发线程
Java
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭