java集合之Map
Map和Collecton比较
Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。
Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
Collection中的集合称为单列集合,Map中的集合称为双列集合。
- 需要注意的是, Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
- Map中常用的集合为HashMap集合、LinkedHashMap集合。
HashMap
HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
key不重复 后面的覆盖前面
输入顺序和存储顺序不一定一致
TreeMap
- 默认是根据key的自然顺序做的排序
- 可以自定义排序规则
常用方法
- 添加 put(key,value)
Map <String,Integer> map = new HashMap<>();
Character temp='a';
for(int i=0;i<26;i++){map.put(temp+"",i+97);temp++;
}
如果键是第一次存储,就直接存储元素
如果键不是第一次存在,就用值把以前的值替换掉
- 删除功能 remove(Object key)
map.remove("a");//根据key删除这一键值对
- 移除所有的键值对元素 void clear()
map.clear();
- 判断集合是否包含指定的键 containsKey(Object key)
boolean flag = map.containsKey("a");//存在返回true,不存在返回false
- 判断集合是否包含指定的值 containsValue(Object value)
boolean flag =map.containsValue(99);//存在返回true,不存在返回false
- 判断集合是否为空 isEmpty()
boolean flag =map.isEmpty();//若为空返回true,不空返回false
- 长度功能 size()
map.size()//返回有多少键值对
- Map 的遍历
1.同时遍历key和value时,keySet与entrySet方法的性能差异取决于key的复杂度,总体来说还是推荐使用entrySet。换言之,取决于HashMap查找value的开销。entrySet一次性取出所有key和value的操作是有性能开销的,当这个损失小于HashMap查找value的开销时,entrySet的性能优势就会体现出来。
Set<Map.Entry<String, Integer>> entries = map.entrySet();//把这每个键值对存到一个set集合中,便利set集合
for (Map.Entry<String, Integer> entry : entries) {System.out.println("key= "+entry.getKey()+" value= "+entry.getValue());
}
2.只遍历key时,keySet方法更为合适,因为entrySet将无用的value也给取出来了,浪费了性能和空间。
Set<String> strings = map.keySet();
for (String string : strings) {System.out.println("key = "+string+" value = "+map.get(string));
}
3.只遍历value时,使用vlaues方法是最佳选择,entrySet会略好于keySet方法。
Collection<Integer> values = map.values();
for (Integer value : values) {System.out.println("value = "+value);
}
java集合之Map相关推荐
- Java—一篇读懂java集合(Collection/Map)及Lambda表达式
集合简介 在集合类之前,我们使用数组存储,数组既可以存储基本数据类型的值,也可以存储对象(对象的引用变量),但是集合只能存储对象. Java集合类似于一种容器,将同类型的对象(实际为对象引用) ...
- Java集合查找Map,Java集合框架中Map接口的使用
在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...
- JAVA集合之Map集合遍历
Map集合比较特殊,它和Set集合一样是无序的.但是Map集合并没有实现Iterator接口,所以无法直接通过Iterator迭代器的方式来遍历Map集合.它是间接的通过Set集合的迭代器来遍历集合中 ...
- Java集合或Map中元素排序及过滤
在Java中,对集合或Map中元素进行排序或过滤是一个频繁操作.这里以List为例介绍下如何在集合中实现元素的排序和过滤功能.对于非List元素(Set.Map)等,一方面可以参考List使用类似的方 ...
- Java集合之Map集合
1.Map集合 1.1Map集合概述和特点[理解] Map集合概述 interface Map<K,V> K:键的类型:V:值的类型 Map集合的特点 双列集合,一个键对应一个值 键不可以 ...
- Java集合:Map集合
一.简述 public interface Map<K,V>将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 注意:Map中的集合不能包含重复的键,值可以重复.每 ...
- 【Java集合之Map】HashMap、HashTable、TreeMap、LinkedHashMap区别
Java为数据结构中的映射定义了一个接口java.util.Map,它有四个实现类,分别是HashMap.HashTable.LinkedHashMap和TreeMap.本节实例主要介绍这4中实例的用 ...
- Java集合(List Map)
异常: try catch finally throw throws 自定义异常: 创建一个普通的Java类,让它继承Exception, RuntimeException Exception分为ch ...
- Java集合总结Map篇
Map Map是一个接口属于键值对的总接口,也就是集合的另一个大阵营. 其派生的类包括AbstractMap.HashMap.Hashtable.IdentityHashMap.LinkedHashM ...
最新文章
- window下使用nw.js开发桌面应用程序环境的搭建
- linux 返回上一个文件夹_常用命令之linux指令
- Android 音视频深入 四 录视频MP4(附源码下载)
- mac USB串口工具配置
- Uinttest +excel结合使用--详细讲解
- 洛谷P2568 GCD(莫比乌斯反演)
- mysql replication 原理_MySQL Replication(复制)基本原理 | 学步园
- oracle语句_ORACLE 常用语句实例:CTE MERGE 结合
- 架构运维篇(一):Centos7/Linux安装jdk环境
- JAVAWEB开发Myeclipse 项目中报“无法解析类型 java.io.ObjectInputStream,从必需的 .class 文件间接引用了它”解决办法
- Windows IE8降为IE6的方法
- 【附源码】计算机毕业设计java音乐鉴赏网站前端开发设计与实现
- 基础的数组/链表实现的队列
- SOP是什么?SOP的作用是什么?如何编写SOP?
- YAPI部署及使用文档
- 【官网文档】机器学习术语表
- android 各个存储、储存路径及获取方法总结
- SQL Server 2014 的完美卸载
- 新手小白入门latex排版
- 股票API下单接口是怎样传入交易数据的?
热门文章
- CSS3基础入门03
- 南加大计算机本科学费,留学南加州大学学费多少一年
- 直播新红海,狼人杀火爆背后的实时语音视频技术 | 深度
- oracle分组查询取第一条数据,160804、oracle查询:取出每组中的第一条记录
- Clickhouse第一讲-CK概述
- 【132】求把字符串分割成回文串的最少切分次数
- Linux 各种压缩、解压命令
- Windows:通过GPO部署iTunes for Windows
- python实现水滴筹页面的数据统计
- 学习Pycharm使用方法(一):Pycharm中Make available to all projects的含义是什么