如何利用HashMap实现一个遍历功能

  介绍

这篇文章给大家介绍如何利用HashMap实现一个遍历功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>地图的几种遍历方式:

Map<,字符串,String>, map =, new  HashMap<在();      ,map.put (“aa",,“@sohu.com");      ,map.put (“bb",“@163.com");      ,map.put (“cc",,“@sina.com");      ,System.out.println(“普通的遍历方法,通过Map.keySet遍历键和value");//普通使用,二次取值      ,for  (String  key : map.keySet ()), {      System.out.println才能(“键=,“+键+“,以及价值=https://www.yisu.com/zixun/? map.get(键));      }      System.out.println(“通过Map.entrySet使用迭代器遍历键和值:”);      迭代器<地图。进入<字符串,字符串>它=map.entrySet () .iterator ();      而(it.hasNext ()) {      地图。条目<字符串,字符串>条目=it.next ();      系统。println(“关键=" + entry.getKey() +”和价值=" + entry.getValue ());      }      System.out.println(“通过Map.entrySet遍历键和值”);//推荐这种,特别是容量大的时候      (地图。条目<字符串,字符串>条目:map.entrySet ()) {      系统。println(“关键=" + entry.getKey() +”和价值=" + entry.getValue ());      }   ? ? System.out.println(“通过Map.values()遍历所有的值,但不能遍历键”);      (字符串v: map.values ()) {      系统。println(“价值=" + v);      }

<>强HashMap和散列表的联系和区别

实现原理相同,功能相同,底层都是哈希表结构,查询速度快,在很多情况下可以互用,早期的版本一般都是安全的。

HashMap和哈希表都实现了地图接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(同步),以及速度。

HashMap几乎可以等价于Hashtable,除了HashMap是非同步的,并可以接受零(HashMap可以接受为零的键值(键)和值(值),而散列表则不行)。

HashMap是非同步,而散列表是同步的,这意味着散列表是线程安全的,多个线程可以共享一个Hashtable;而如果没有正确的同步的话,多个线程是不能共享HashMap的. java 5提供了ConcurrentHashMap,它是Hashtable的替代,比Hashtable的扩展性更好。

另一个区别是HashMap的迭代器(迭代器)是快速失败迭代器,而Hashtable的枚举器迭代器不是快速失败的,所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的删除()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为,要看JVM。这条同样也是枚举和迭代器的区别。

由于哈希表是线程安全的也是同步的,所以在单线程环境下它比HashMap要慢。如果你不需要同步,只需要单一线程,那么使用HashMap性能要好过Hashtable。

HashMap不能保证随着时间的推移中地图的元素次序是不变的。

<强> HashMap的特点

HashMap是地图接口的子类,是将键映射到值的对象,其中键和值都是对象,不是线程安全的

HashMap用哈希表来存储映射的键

?关键是无序唯一,可以有一个为空

?无价值序不唯一,可以有对个空

linkedHashMap使用哈希表存储中映射的键,并且使用双挂钩向链表管理顺序

我们用的最多的是HashMap,在地图中插入,删除和定位元素,HashMap是最好的选择。如果需要输出的顺序和输入的相同,那么用linkedHashMap可以实现,它还可以按读取顺序来排列。

HashMap是一个最常用的地图,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度.HashMap最多只允许一条记录的键为NULL,允许多条记录的值为NULL。HashMap不支持线程同步,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致性。

如果需要同步,可以用集合的synchronizedMap方法使HashMap具有同步的能力.LinkedHashMap保存了记录的插入顺序,在用迭代器遍历LinkedHashMap时,先得到的记录肯定是先插入的。

HashMap可以通过下面的语句进行同步:

地图m=Collections.synchronizeMap (HashMap);

<强>几大常用集合的效率对比

如何利用HashMap实现一个遍历功能

关于如何利用HashMap实现一个遍历功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

如何利用HashMap实现一个遍历功能