「javamap便利」javamap使用
今天给各位分享javamap便利的知识,其中也会对javamap使用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
如何高效的遍历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几种简单方法
代码如下:
import java.util.HashMap;
import java.util.Map;
public class App {
public static void main(String[] args) {
MapString, Object map = new HashMap();
map.put("Name", "Barry");
map.put("Gender", "Male");
map.put("Age", 25);
// 第一种遍历方式
for (Map.EntryString, Object entry : map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
// 第二种遍历方式
map.forEach((key, value) - {
System.out.println(key + " = " + value);
});
// 通过遍历 key,然后再获取 value
for (String key : map.keySet()) {
System.out.println(key + " = " + map.get(key));
}
// 单独遍历 values
for (Object value : map.values()) {
System.out.println(value);
}
}
}
JAVA循环遍历Map的几种方法
第一种用for循环
Java代码
for(Map.EntryString, String entry:map.entrySet()){
System.out.println(entry.getKey()+"---"+entry.getValue());
}
第二种用迭代
Java代码
Set set = map.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.EntryString, String entry1=(Map.EntryString, String)i.next();
System.out.println(entry1.getKey()+"=="+entry1.getValue());
}
用keySet()迭代
Java代码
Iterator it=map.keySet().iterator();
while(it.hasNext()){
String key;
String value;
key=it.next().toString();
value=map.get(key);
System.out.println(key+"--"+value);
}
用entrySet()迭代
Java代码
Iterator it=map.entrySet().iterator();
System.out.println( map.entrySet().size());
String key;
String value;
while(it.hasNext()){
Map.Entry entry = (Map.Entry)it.next();
key=entry.getKey().toString();
value=entry.getValue().toString();
System.out.println(key+"===="+value);
}
java Map 怎么遍历
Object val = entry.getValue();}效率高,以后一定要使用此种方式!第二种:Map map = new HashMap(); Iterator iter = map.keySet().iterator(); while (iter.hasNext()) { Object key = iter.next(); Object val = map.get(key);}效率低,以后尽量少使用! HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的,下面请看实例: public class HashMapTest { public static void main(String[] args) ...{ HashMap hashmap = new HashMap(); for (int i = 0; i 1000; i ) ...{ hashmap.put("" i, "thanks");}long bs = Calendar.getInstance().getTimeInMillis(); Iterator iterator = hashmap.keySet().iterator(); while (iterator.hasNext()) ...{ System.out.print(hashmap.get(iterator.next()));}System.out.println(); System.out.println(Calendar.getInstance().getTimeInMillis() - bs); listHashMap();}public static void listHashMap() ...{ java.util.HashMap hashmap = new java.util.HashMap(); for (int i = 0; i 1000; i ) ...{ hashmap.put("" i, "thanks");}long bs = Calendar.getInstance().getTimeInMillis(); java.util.Iterator it = hashmap.entrySet().iterator(); while (it.hasNext()) ...{ java.util.Map.Entry entry = (java.util.Map.Entry) it.next(); // entry.getKey() 返回与此项对应的键 // entry.getValue() 返回与此项对应的值 System.out.println(Calendar.getInstance().getTimeInMillis() - bs);}}对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。
javamap便利的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于javamap使用、javamap便利的信息别忘了在本站进行查找喔。