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三的更多相关文章

  1. java:Map借口及其子类HashMap五,identityHashMap子类

    java:Map借口及其子类HashMap五,identityHashMap子类 了解:identityHashMap子类 一般情况下,标准的Map,是不会有重复的key值得value的,相同的key ...

  2. java:Map借口及其子类HashMap四

    java:Map借口及其子类HashMap四 使用非系统对象作为key,使用匿名对象获取数据 在Map中可以使用匿名对象找到一个key对应的value. person: public class Ha ...

  3. java:Map借口及其子类HashMap二

    java:Map借口及其子类HashMap二 重点:所有的集合必须依赖Iterator输出 Map<String, Integer> map = new HashMap<String ...

  4. java:Map借口及其子类

    java:Map借口及其子类 Conllection是保存单值最大得父接口(即没有key的数据),那么Map是保存的内容是一对键值的数据,即KEY->VALUE的形式保存,如电话簿等. Map常 ...

  5. HashMap三百问

    文章目录: 一.JDK1.7之HashMap 二.JDK1.8之HashMap 三.Hashtable JDK1.7之HashMap 1. 定义 HashMap实现了Map接口,继承AbstractM ...

  6. Map接口及其子类

    Map接口操作的是一对对象,即二元偶对象,Map接口中的每一个元素都使用"key--value"的形式存储在集合中. SortedMap接口是排序接口,仅仅要是实现了此接口的子类, ...

  7. Java 数据类型:集合接口Map:HashTable;HashMap;IdentityHashMap;LinkedHashMap;Properties类读取配置文件;SortedMap接口和TreeMap实现类:【线程安全的ConcurrentHashMap】

    Map集合java.util.Map Map用于保存具有映射关系的数据,因此Map集合里保存着两个值,一个是用于保存Map里的key,另外一组值用于保存Map里的value.key和value都可以是 ...

  8. Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法

    Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayL ...

  9. Java容器类List、ArrayList、Vector及map、HashTable、HashMap的区别与用法

    Java容器类List.ArrayList.Vector及map.HashTable.HashMap的区别与用法 ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数 ...

随机推荐

  1. ntp服务及其配置

    集群中使用NTP服务 简介 之前搭建zookeeper时报了一个错,我以为是ntp的问题,结果不是.这里详细学习一下如何在集群中使用ntp服务. 什么是ntp服务 来自ntp的百度百科: NTP服务器 ...

  2. UFLDL深度学习笔记 (四)用于分类的深度网络

    UFLDL深度学习笔记 (四)用于分类的深度网络 1. 主要思路 本文要讨论的"UFLDL 建立分类用深度网络"基本原理基于前2节的softmax回归和 无监督特征学习,区别在于使 ...

  3. 中国版Office 365混合部署功能

    中国版Office 365混合部署功能已经正式上线了(原计划6月份推出),虽然支持的类型不如国际版的Office 365全面,但这也标志了该功能与之前相比,已经迈出了重要一步.目前中国版Office ...

  4. Pexpect--example--hive.py解读

    python version 2.6.6 ; pexpect 2.3 login方法解读: def login (args, cli_username=None, cli_password=None) ...

  5. Windows下安装redis和在php中使用phpredis扩展

    详细博客地址:https://my.oschina.net/junn/blog/281058

  6. URAL 1181 Cutting a Painted Polygon【递归+分治】

    题目: http://acm.timus.ru/problem.aspx?space=1&num=1181 http://acm.hust.edu.cn/vjudge/contest/view ...

  7. 九度OJ 1261:寻找峰值点 (基础题)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:500 解决:37 题目描述: 给定一个整数序列,该整数序列存在着这几种可能:先递增后递减.先递减后递增.全递减.全递增. 请找出那个最大值的 ...

  8. zabbix server 端安装

    1.系统环境 [root@crazy-acong ~]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@crazy-acong ~] ...

  9. nginx-1.10.3 编译安装

    1.系统环境 [root@crazy-acong ~]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@crazy-acong ~] ...

  10. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)

    正如在<我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)>一文中看到的,在AbstractBoard的代码中,当程序需要创建N个Piec ...