遍历map

时间:2024-09-30 09:41:54编辑:流行君

java Map 怎么遍历

关于java中遍历map具体有四种方式,请看下文详解。1、这是最常见的并且在大多数情况下也是最可取的遍历方式,在键值都需要时使用。Map map = new HashMap();for (Map.Entry entry : map.entrySet()) {System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());}2、在for-each循环中遍历keys或values。如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。Map map = new HashMap();for (Integer key : map.keySet()) {System.out.println("Key = " + key);}for (Integer value : map.values()) {System.out.println("Value = " + value);}该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。3、使用Iterator遍历使用泛型:Map map = new HashMap();Iterator> entries = map.entrySet().iterator();while (entries.hasNext()) {Map.Entry entry = entries.next();System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());}不使用泛型:Map map = new HashMap();Iterator entries = map.entrySet().iterator();while (entries.hasNext()) {Map.Entry entry = (Map.Entry) entries.next();Integer key = (Integer)entry.getKey();Integer value = (Integer)entry.getValue();System.out.println("Key = " + key + ", Value = " + value);}4、通过键找值遍历(效率低)Map map = new HashMap();for (Integer key : map.keySet()) {Integer value = map.get(key);System.out.println("Key = " + key + ", Value = " + value);}假设Map中的键值对为1=>11,2=>22,3=>33,现用方法1来遍历Map代码和调试结果如下:扩展资料:1、HashMap的重要参数HashMap 的实例有两个参数影响其性能:初始容量 和加载因子。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。加载因子 是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 rehash 操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。在Java编程语言中,加载因子默认值为0.75,默认哈希表元为101。2、HashMap的同步机制注意,此实现不是同步的。 如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。(结构上的修改是指添加或删除一个或多个映射关系的任何操作;以防止对映射进行意外的非同步访问,如下:Map m = Collections.synchronizedMap(new HashMap(...));参考资料:百度百科-Hashmap

如何高效的遍历Map?你常用的不一定是最快的

如文章标题所言,遍历Map是开发过程中比较常见的行为,实现的方式也有多种方式,本文带领大家一起看看更加高效的遍历 Map 。 首先一起来看看,有哪些遍历 Map 的方式 这种应该算是比较常见的使用方式,也是比较容易理解的 keySet : 获取 map 中所有的 key ,然后依次遍历每个 key 。 这种是我平时开发中用的最多的方式,简单通俗易懂。 但是其性能如何呢?后续待揭秘。 不知道有多少人用过 Java8 中的 parallel模式,本质是一种并行处理方式。 性能如何?稍后揭晓。 不行就找找外援试试? 测试环境如下:Intel i7-4790 3.60 GHz, 16 GB 测试集为小的Map集合(大约100个元素),各个方法耗时如下: 从结果看出,在数据量比较小时, 利用 Java 8中的foreach 暂时领先。 测试集为元素数据量 1000 的 Map 集合,测试结果如下: 从结果集合看,在中等数据量情况下,外援 Eclipse (CS) collections 中的 MutableMap 表现最为优异,勇得第一。 其次为 Java 8 中的 foreach ,位列第二。 测试集为元素数据量 100000 (十万级别) 的 Map 集合,测试结果如下: 利用 iterator 和 Map.Entry 【方法1】稳居第一,领先 第二名差不多7s。 第二名为 Eclipse (CS) collections 中的 MutableMap 位列第二,在大数据量下表现表现比较出色。 指的注意的是之前在小数据量下表现比较出色的 Java 8 中的 foreach ,排名却比较靠后,但是仍然超过了利用 Java8 的 Stream API 。 其中还有另一个现象:利用并行模式计算的 Java8 中的 Stream API parallel ,在大数据量时表现好于 foreach 和 stream api 。 下表为不同数据量情况下的各个方法性能表现 在平时开发中,数据量都不算太大时,剖除外援而言, Java 8 中的 foreach 【方法3】,表现比较优异。而并行运算的 Stream API parallel 【方法8】表现没有想象中好, Stream API 【方法7】表现中规中矩。 主要罗列了多种遍历 Map 的方式,每个实现方式都有各自的特点,有的人喜欢 foreach 的通俗易懂;有的人喜欢 stream 的干净利落。 如果从性能来看,小数据量情况下:优先推荐使用 Java8 Foreach 【方法3】。 大数据量情况下推荐 使用 iterator 和 Map.Entry 【方法1】。 我是大黄,一个只会写 HelloWorld 的程序员,下期见。

java中map的常用遍历方法

方法一 在for-each循环中使用entries来遍历

这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。

Map map = new HashMap();

for (Map.Entry entry : map.entrySet()) {

System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());

}

注意:for-each循环在java 5中被引入所以该方法只能应用于java 5或更高的版本中。如果你遍历的是一个空的map对象,for-each循环将抛出NullPointerException,因此在遍历前你总是应该检查空引用。

方法二 在for-each循环中遍历keys或values。

如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。

Map map = new HashMap();

//遍历map中的键

for (Integer key : map.keySet()) {

System.out.println("Key = " + key);

}



//遍历map中的值

for (Integer value : map.values()) {

System.out.println("Value = " + value);

}

该方法比entrySet遍历在性能上稍好


方法三使用Iterator遍历

使用泛型:

Map map = new HashMap();

Iterator> entries = map.entrySet().iterator();

while (entries.hasNext()) {

Map.Entry entry = entries.next();

System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());

}

不使用泛型:

Map map = new HashMap();

Iterator entries = map.entrySet().iterator();

while (entries.hasNext()) {

Map.Entry entry = (Map.Entry) entries.next();

Integer key = (Integer)entry.getKey();

Integer value = (Integer)entry.getValue();

System.out.println("Key = " + key + ", Value = " + value);

}

方法四、通过键找值遍历(效率低)

Map map = new HashMap();

for (Integer key : map.keySet()) {

Integer value = map.get(key);

System.out.println("Key = " + key + ", Value = " + value);

}


总结

如果仅需要键(keys)或值(values)使用方法二。

如果你使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三。

否则使用方法一(键值都要)。


上一篇:burning什么意思

下一篇:没有了