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相关推荐

  1. Java—一篇读懂java集合(Collection/Map)及Lambda表达式

    集合简介   在集合类之前,我们使用数组存储,数组既可以存储基本数据类型的值,也可以存储对象(对象的引用变量),但是集合只能存储对象.   Java集合类似于一种容器,将同类型的对象(实际为对象引用) ...

  2. Java集合查找Map,Java集合框架中Map接口的使用

    在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...

  3. JAVA集合之Map集合遍历

    Map集合比较特殊,它和Set集合一样是无序的.但是Map集合并没有实现Iterator接口,所以无法直接通过Iterator迭代器的方式来遍历Map集合.它是间接的通过Set集合的迭代器来遍历集合中 ...

  4. Java集合或Map中元素排序及过滤

    在Java中,对集合或Map中元素进行排序或过滤是一个频繁操作.这里以List为例介绍下如何在集合中实现元素的排序和过滤功能.对于非List元素(Set.Map)等,一方面可以参考List使用类似的方 ...

  5. Java集合之Map集合

    1.Map集合 1.1Map集合概述和特点[理解] Map集合概述 interface Map<K,V> K:键的类型:V:值的类型 Map集合的特点 双列集合,一个键对应一个值 键不可以 ...

  6. Java集合:Map集合

    一.简述 public interface Map<K,V>将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 注意:Map中的集合不能包含重复的键,值可以重复.每 ...

  7. 【Java集合之Map】HashMap、HashTable、TreeMap、LinkedHashMap区别

    Java为数据结构中的映射定义了一个接口java.util.Map,它有四个实现类,分别是HashMap.HashTable.LinkedHashMap和TreeMap.本节实例主要介绍这4中实例的用 ...

  8. Java集合(List Map)

    异常: try catch finally throw throws 自定义异常: 创建一个普通的Java类,让它继承Exception, RuntimeException Exception分为ch ...

  9. Java集合总结Map篇

    Map Map是一个接口属于键值对的总接口,也就是集合的另一个大阵营. 其派生的类包括AbstractMap.HashMap.Hashtable.IdentityHashMap.LinkedHashM ...

最新文章

  1. window下使用nw.js开发桌面应用程序环境的搭建
  2. linux 返回上一个文件夹_常用命令之linux指令
  3. Android 音视频深入 四 录视频MP4(附源码下载)
  4. mac USB串口工具配置
  5. Uinttest +excel结合使用--详细讲解
  6. 洛谷P2568 GCD(莫比乌斯反演)
  7. mysql replication 原理_MySQL Replication(复制)基本原理 | 学步园
  8. oracle语句_ORACLE 常用语句实例:CTE MERGE 结合
  9. 架构运维篇(一):Centos7/Linux安装jdk环境
  10. JAVAWEB开发Myeclipse 项目中报“无法解析类型 java.io.ObjectInputStream,从必需的 .class 文件间接引用了它”解决办法
  11. Windows IE8降为IE6的方法
  12. 【附源码】计算机毕业设计java音乐鉴赏网站前端开发设计与实现
  13. 基础的数组/链表实现的队列
  14. SOP是什么?SOP的作用是什么?如何编写SOP?
  15. YAPI部署及使用文档
  16. 【官网文档】机器学习术语表
  17. android 各个存储、储存路径及获取方法总结
  18. SQL Server 2014 的完美卸载
  19. 新手小白入门latex排版
  20. 股票API下单接口是怎样传入交易数据的?

热门文章

  1. CSS3基础入门03
  2. 南加大计算机本科学费,留学南加州大学学费多少一年
  3. 直播新红海,狼人杀火爆背后的实时语音视频技术 | 深度
  4. oracle分组查询取第一条数据,160804、oracle查询:取出每组中的第一条记录
  5. Clickhouse第一讲-CK概述
  6. 【132】求把字符串分割成回文串的最少切分次数
  7. Linux 各种压缩、解压命令
  8. Windows:通过GPO部署iTunes for Windows
  9. python实现水滴筹页面的数据统计
  10. 学习Pycharm使用方法(一):Pycharm中Make available to all projects的含义是什么