java笔记--Map的用法
Map
接口概述
我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。
Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。
Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
Collection中的集合称为单列集合,Map中的集合称为双列集合。
需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
Map中常用的集合为HashMap集合、LinkedHashMap集合。
Map接口中常用集合概述
通过查看Map接口描述,看到Map有多个子类,这里我们主要讲解常用的HashMap集合、LinkedHashMap集合。
HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
LinkedHashMap<K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
注意:Map接口中的集合都有两个泛型变量<K,V>,在使用时,要为两个泛型变量赋予数据类型。两个泛型变量<K,V>的数据类型可以相同,也可以不同。
Map接口中的常用方法
没有,则没有这个键对应的值,返回null,并把指定的键值添加到集合中;
使用put方法时,若指定的键(key)在集合中存在,则返回值为集合中键对应的值(该值为替换前的值),并把指定键所对应的值,替换成指定的新值。
get方法:获取指定键(key)所对应的值(value)
put方法:将指定的键与值对应起来,并添加到集合中
方法返回值为键所对应的值
使用put方法时,若指定的键(key)在集合中
remove方法:根据指定的键(key)删除元素,返回被删除元素的值(value)。
Map接口的方法演示
public class MapDemo {public static void main(String[] args) {//创建Map对象Map<String, String> map = new HashMap<String,String>(); //数据采用的哈希表结构//给map中添加元素map.put("星期一", "Monday");map.put("星期日", "Sunday");System.out.println(map); // {星期日=Sunday, 星期一=Monday}//当给Map中添加元素,会返回key对应的原来的value值,若key没有对应的值,返回nullSystem.out.println(map.put("星期一", "Mon")); // MondaySystem.out.println(map); // {星期日=Sunday, 星期一=Mon}//根据指定的key获取对应的valueString en = map.get("星期日");System.out.println(en); // Sunday//根据key删除元素,会返回key对应的value值String value = map.remove("星期日");System.out.println(value); // SundaySystem.out.println(map); // {星期一=Mon}}
}
Map集合遍历键找值方式
键找值方式:即通过元素中的键,获取键所对应的值
操作步骤与图解:
1.获取Map集合中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键
2.遍历键的Set集合,得到每一个键
3.根据键,获取键所对应的值
代码演示: //利用了迭代器Iterator (点此了解迭代器)
public class MapDemo {public static void main(String[] args) {//创建Map对象Map<String, String> map = new HashMap<String,String>();//给map中添加元素map.put("邓超", "孙俪");map.put("李晨", "范冰冰");
map.put("刘德华", "柳岩");//获取Map中的所有keySet<String> keySet = map.keySet();//遍历存放所有key的Set集合Iterator<String> it =keySet.iterator(); **while(it.hasNext()){ //利用了Iterator迭代器**//得到每一个keyString key = it.next();//通过key获取对应的valueString value = map.get(key);System.out.println(key+"="+value);}}
}
Map集合遍历键值对方式
键值对方式:即通过集合中每个键值对(Entry)对象,获取键值对(Entry)对象中的键与值。
操作步骤与图解:
1.获取Map集合中,所有的键值对(Entry)对象,以Set集合形式返回。
2.遍历包含键值对(Entry)对象的Set集合,得到每一个键值对(Entry)对象
3.通过键值对(Entry)对象,获取Entry对象中的键与值。
public class MapDemo {public static void main(String[] args) {//创建Map对象Map<String, String> map = new HashMap<String,String>();//给map中添加元素map.put("邓超", "孙俪");map.put("李晨", "范冰冰");map.put("刘德华", "柳岩");//获取Map中的所有key与value的对应关系Set<Map.Entry<String,String>> entrySet = map.entrySet();//遍历Set集合Iterator<Map.Entry<String,String>> it =entrySet.iterator();while(it.hasNext()){//得到每一对对应关系Map.Entry<String,String> entry = it.next();//通过每一对对应关系获取对应的keyString key = entry.getKey();//通过每一对对应关系获取对应的valueString value = entry.getValue();System.out.println(key+"="+value);}}
}
注意:Map集合不能直接使用迭代器或者foreach进行遍历。但是转成Set之后就可以使用了。
下面转载自来自一个Map的用法例子:
//假设key 为Integer型 value 为String ,具体自行定义
Map<Integer,String> map = new HashMap<Integer,String>();
放入数据
map.put(1,"a");
map.put(2,"b");
map.put(3,"c");
根据key获取对应的value
map.get(1); //获取到对应key=1时的value=a
遍历方法1:keyset遍历
Iterator<String> iter = map.keySet().iterator();while (iter.hasNext()) {int key = iter.next();String value = map.get(key);
}————————————————————————————————————————————//还有一种写法 用for each
for (String key : map.keySet()) {String value = map.get(key);
}
遍历方法2:
Iterator<Entry<String, String>> iter = map.entrySet().iterator();Entry<String, String> entry;while (iter.hasNext()) {entry = iter.next();int key = entry.getKey();String value = entry.getValue();}
//同样的for each写法
for (Entry<String, String> entry: map.entrySet()) {int key = entry.getKey();String value = entry.getValue();}
另外,在考虑效率方面,for each速度更快一点点,推荐使用for each写法来遍历。
java笔记--Map的用法相关推荐
- java containskey_Java Map containsKey()用法及代码示例
java.util.Map.containsKey()方法用于检查特定键是否已映射到Map中.它使用key元素作为参数,如果该元素在映射中映射,则返回True. 用法: boolean contain ...
- java中Map的用法(HaspMap用法)
public interface Map<K,V> 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 1 import java.util.HashMap; 2 ...
- Java工作笔记-Map的基本用法
这段话是博客园一大神的,摘录下来: (01) Map 是"键值对"映射的抽象接口. (02) AbstractMap 实现了Map中的绝大部分函数接口.它减少了"Map的 ...
- java map contains_Java Map containsValue()用法及代码示例
java.util.Map.containsValue()方法用于检查特定值是通过Map中的单个还是多个键进行映射的.它使用该值作为参数,如果该值由映射中的任何键映射,则返回True. 用法: boo ...
- java的entryset_Java Map entrySet()用法及代码示例
Java中的java.util.Map.entrySet()方法用于根据Map中包含的相同元素创建集合.它本质上返回Map的集合视图,或者我们可以创建一个新集合并将Map元素存储到其中. 用法: ma ...
- Java中entryset用法,keySet()、entrySet()和Map.Entry用法
2019-11-16 package com.lixing.jihe13; import java.util.*; /** * @author: ZH * @date: 2019/10/25 10:4 ...
- java map.get_Java Map get()用法及代码示例
Java中的Map接口的get()方法用于检索或获取由参数中提到的特定键映射的值.当映射不包含键的此类映射时,它将返回NULL. 用法: thisMap.get(Object key_element) ...
- Java中Map用法详解
原文地址http://blog.csdn.net/guomutian911/article/details/45771621 原文地址http://blog.csdn.net/sunny2437885 ...
- list和map用法java,java 集合list和map的用法
import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Li ...
最新文章
- node建立博客系统遇到的问题,1,乱码。2,multer的使用错误。3使用session问题...
- iOS开发(2)UILabel学习
- 高级java知识结构图,Spring高级框架课程笔记 PDF 下载
- IOS之Label画一条删除线
- xampp mysql 查询很慢_如何开启mysql的慢查询机制
- 【Java并发编程】16、ReentrantReadWriteLock源码分析
- 服务器san 虚拟化安装系统,在Hyper-V中安装iSCSI SAN服务器(下)
- ajax表单提交post(错误400) 序列化表单(post表单转换json(序列化))
- nagios常见错误及页面错误
- verilog实现格雷码(Gray Code)与二进制编码转换
- 如何让cmd一直默认以管理员身份打开
- Rancher某环境所有主机网络瘫痪问题
- 【渝粤教育】电大中专跨境电子商务理论与实务 (32)作业 题库
- CHM 已取消到该网页的导航
- bert模型中的[CLS]、[UNK]、[SEP]是什么意思?
- APP开放源码第一弹《纳豆》
- 快速云:关于云技术未来的六大趋势
- 用pecl命令安装php扩展geoip
- __str__()方法
- 微软校招编程题Beautiful String的状态机解法
热门文章
- 处理迟到问题--简单的Java程序记录
- 关系型数据库与分布式数据库
- SpringBoot配置Mybatis打印SQL
- python实现目标识别眼镜_用Python快速实现YOLO目标检测
- Istio测试环境搭建和功能演示
- Thinkpad T440s重装系统 Window或者linux
- python records_Python Pandas DataFrame.to_records用法及代码示例
- Mybatis-plus分页查询records为空,total不为空的问题
- .NET web开发入门小例子
- outlook计算机应用操作题,全国统考计算机应用基础outlook操作题(总13页).doc