ava:Map借口及其子类HashMap三
ava:Map借口及其子类HashMap三
HashMap常用子类(异步非安全线程,性能高; Hashtable:同步的安全线程,性能低)
map(HashMap)中的key,value可以通过 Set<E>,或者Conllection<E>来接收.
Map<String,Integer> allMap = new HashMap<String, Integer>();
allMap.put("zhangsan", 1);
allMap.put("zhangsan", 2);
allMap.put("lisi", 3);
allMap.put("tianqi", 4); //Integer value = allMap.get("zhangsan");
//System.out.println(value); Collection<Integer> keys = allMap.values();
Iterator<Integer> iter = keys.iterator();
while(iter.hasNext())
{
Integer str = iter.next();
System.out.println( str + "、" );
}
结果:
3、
2、
4、
注意事项:
Map不能直接使用Iterator类输出
在集合的标准操作中所有的集合内容最好使用Iterator进行输出,但在Map接口中并没有明确的定义出这样的操作。如果没有的话,则必须深入了解Map的机制。
在Map中虽然是以一对值得形式出现的,可是真正的保存的还是一个单独的对象,即:程序key->alue的存放在一个对象之中,之后将对象加入到集合里。
Map.Entry,Map实体,从定义格式上可以发现,此接口属于STATIC静态声明的接口。而且是一个内部接口。
对于Map和Map.Entry的关系,如下图:
MAP.Entry [ 一组对象数据]
Map.Entry [ 一组对象数据]
Map.Entry [一组对象数据]
....... <-------------------- 增加元素 Map.Entry[ key=>value 一组对象数据]
所以:下面就可以给出Map接口使用Iterator输出的标准操作:
1.通过Map接口中的:Set<Map.Entry<K, V>> entrySet()方法取得Set集合
2.通过Set接口,为Iterator进行初始化操作
3.通过Iterator取得每一个Map.Entry
4.通过Map.Entry将KEY与VALUE分离。
例子:
Map<String, Integer> allSet = new HashMap<String, Integer>();
allSet.put("zhangsan", 1);
allSet.put("zhangsan", 2);
allSet.put("lisi", 3);
allSet.put("wangwu", 4); Set<Map.Entry<String,Integer>> allList = allSet.entrySet();
Iterator<Map.Entry<String,Integer>> iter = allList.iterator();
while(iter.hasNext())
{
Map.Entry<String, Integer> map = iter.next();
System.out.println( map.getKey() + "-->" + map.getValue() ); }
Set<Map.Entry<String,Integer>> allList = allSet.entrySet();
Iterator<Map.Entry<String,Integer>> iter = allList.iterator();
while(iter.hasNext())
{
Map.Entry<String, Integer> map = iter.next();
System.out.println( map.getKey() + "-->" + map.getValue() ); }
结果:
lisi-->3
zhangsan-->2
wangwu-->4
或者Foreach循环:
Map<String, Integer> allSet = new HashMap<String, Integer>();
allSet.put("zhangsan", 1);
allSet.put("zhangsan", 2);
allSet.put("lisi", 3);
allSet.put("wangwu", 4); //或者
for(Map.Entry<String, Integer> map: allSet.entrySet())
{
System.out.println( map.getKey() + "-->" + map.getValue());
}
ava:Map借口及其子类HashMap三的更多相关文章
- java:Map借口及其子类HashMap五,identityHashMap子类
java:Map借口及其子类HashMap五,identityHashMap子类 了解:identityHashMap子类 一般情况下,标准的Map,是不会有重复的key值得value的,相同的key ...
- java:Map借口及其子类HashMap四
java:Map借口及其子类HashMap四 使用非系统对象作为key,使用匿名对象获取数据 在Map中可以使用匿名对象找到一个key对应的value. person: public class Ha ...
- java:Map借口及其子类HashMap二
java:Map借口及其子类HashMap二 重点:所有的集合必须依赖Iterator输出 Map<String, Integer> map = new HashMap<String ...
- java:Map借口及其子类
java:Map借口及其子类 Conllection是保存单值最大得父接口(即没有key的数据),那么Map是保存的内容是一对键值的数据,即KEY->VALUE的形式保存,如电话簿等. Map常 ...
- HashMap三百问
文章目录: 一.JDK1.7之HashMap 二.JDK1.8之HashMap 三.Hashtable JDK1.7之HashMap 1. 定义 HashMap实现了Map接口,继承AbstractM ...
- Map接口及其子类
Map接口操作的是一对对象,即二元偶对象,Map接口中的每一个元素都使用"key--value"的形式存储在集合中. SortedMap接口是排序接口,仅仅要是实现了此接口的子类, ...
- Java 数据类型:集合接口Map:HashTable;HashMap;IdentityHashMap;LinkedHashMap;Properties类读取配置文件;SortedMap接口和TreeMap实现类:【线程安全的ConcurrentHashMap】
Map集合java.util.Map Map用于保存具有映射关系的数据,因此Map集合里保存着两个值,一个是用于保存Map里的key,另外一组值用于保存Map里的value.key和value都可以是 ...
- Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法
Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayL ...
- Java容器类List、ArrayList、Vector及map、HashTable、HashMap的区别与用法
Java容器类List.ArrayList.Vector及map.HashTable.HashMap的区别与用法 ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数 ...
随机推荐
- ntp服务及其配置
集群中使用NTP服务 简介 之前搭建zookeeper时报了一个错,我以为是ntp的问题,结果不是.这里详细学习一下如何在集群中使用ntp服务. 什么是ntp服务 来自ntp的百度百科: NTP服务器 ...
- UFLDL深度学习笔记 (四)用于分类的深度网络
UFLDL深度学习笔记 (四)用于分类的深度网络 1. 主要思路 本文要讨论的"UFLDL 建立分类用深度网络"基本原理基于前2节的softmax回归和 无监督特征学习,区别在于使 ...
- 中国版Office 365混合部署功能
中国版Office 365混合部署功能已经正式上线了(原计划6月份推出),虽然支持的类型不如国际版的Office 365全面,但这也标志了该功能与之前相比,已经迈出了重要一步.目前中国版Office ...
- Pexpect--example--hive.py解读
python version 2.6.6 ; pexpect 2.3 login方法解读: def login (args, cli_username=None, cli_password=None) ...
- Windows下安装redis和在php中使用phpredis扩展
详细博客地址:https://my.oschina.net/junn/blog/281058
- URAL 1181 Cutting a Painted Polygon【递归+分治】
题目: http://acm.timus.ru/problem.aspx?space=1&num=1181 http://acm.hust.edu.cn/vjudge/contest/view ...
- 九度OJ 1261:寻找峰值点 (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:500 解决:37 题目描述: 给定一个整数序列,该整数序列存在着这几种可能:先递增后递减.先递减后递增.全递减.全递增. 请找出那个最大值的 ...
- zabbix server 端安装
1.系统环境 [root@crazy-acong ~]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@crazy-acong ~] ...
- nginx-1.10.3 编译安装
1.系统环境 [root@crazy-acong ~]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@crazy-acong ~] ...
- 我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)
正如在<我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)>一文中看到的,在AbstractBoard的代码中,当程序需要创建N个Piec ...