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. File类的源码学习

    File类是Java中IO部分的一个类,用于表示文件或者目录的.关于File类有很多的常规操作这里就不介绍了,来看一下不常规的东西. File英文意思是文件,但是它也可以用来表示目录,文件的概念还是比 ...

  2. spring roo初体验

    1.下载spring-roo-2.0.0.M1,并执行如下命令,在/usr/local/bin下面建立一个roo的软连接   sudo ln -s /Users/pud/Documents/still ...

  3. Borg Maze - poj 3026(BFS + Kruskal 算法)

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9821   Accepted: 3283 Description The B ...

  4. git修改用户名以及邮箱

    git 修改当前的project的用户名的命令为:git config user.name 你的目标用户名; git 修改当前的project提交邮箱的命令为:git config user.emai ...

  5. Android中打包JAR时获取资源ID的方法

    前言:在打包android源码的时,有的时候源码中包含了资源文件,但是jar包中不包含,所以会异常,解决的方案就是不用系统的提供的id名,而是直接 获取id,如反射. 1.系统提供的方法: /** * ...

  6. 修改Jmeter配置使能支持更大并发

    Jmeter做并发测试时,报错 java.lang.OutOfMemoryError:gc overhead limit exceeded. 原因是jmeter默认分配内存的参数很小,256M吧.故而 ...

  7. 基于jquery的bootstrap在线文本编辑器插件Summernote (转)

    Summernote是一个基于jquery的bootstrap超级简单WYSIWYG在线编辑器.Summernote非常的轻量级,大小只有30KB,支持Safari,Chrome,Firefox.Op ...

  8. SQL SERVER 2008查看sql执行的时间

    set statistics profile onset statistics io onset statistics time ongo<这里写上你的语句...>goset statis ...

  9. SpringMVC拦截器实现用户登录拦截

    本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 1 < ...

  10. 2.PyCharm安装和使用之HelloWorld

    百度搜一个就好了, 然后下一步下一步 重点来了,穷!   这软件需要购买不然就只能用30天, 作为屌丝的我,在网上不然的搜索: 然后终于搞定了! 屌丝的春天:http://idea.lanyus.co ...