java.util.Map下集合学习总结---备忘
package com.lzw.test;
import java.util.Collections;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class MapTest
{
/*
Map小结:
预置条件:多个线程操作Map
1.使用new HashMap会抛出java.util.ConcurrentModificationException 能够使用null做键与值
2.使用Collections.synchronizedMap(new HashMap<String, String>()),在迭代的时候需要同步.如下:
synchronized (map){
for (Entry<String, String> entry : map.entrySet()){
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
3.JDK1.5新特性, ConcurrentHashMap类遵守与 Hashtable 相同的功能规范,线程同步,不允许使用null作为键值等.
*/
/*
预置条件:数据为1000000
HashMap使用时间:1844
Collections.synchronizedMap使用时间:1813
ConcurrentHashMap使用时间:1437
Hashtable使用时间:749
*/
public static void main(String[] args)
{
// Map<Integer, Integer> map1 =Collections.synchronizedMap(new HashMap<Integer, Integer>());
// Map<Integer, Integer> map2 =new HashMap<Integer, Integer>();
// Map<Integer, Integer> map3 =new ConcurrentHashMap<Integer, Integer>();
// Map<Integer, Integer> map4 =new Hashtable<Integer, Integer>();
// //注意:是用new的时候能不获得实例句柄, 就最好不去获得. 因为数据量太大会造成堆栈溢出..
// MapTest.countTime(map1, "map1");
// MapTest.countTime(map2, "map2");
// MapTest.countTime(map3, "map3");
// MapTest.countTime(map4, "map4");
MapTest.countTime(Collections.synchronizedMap(new HashMap<Integer, Integer>()), "Collections.synchronizedMap");
MapTest.countTime(new HashMap<Integer, Integer>(), "HashMap");
MapTest.countTime(new ConcurrentHashMap<Integer, Integer>(), "ConcurrentHashMap");
MapTest.countTime(new Hashtable<Integer, Integer>(), "Hashtable");
}
public static void countTime(Map<Integer, Integer> map, String mapName)
{
long start = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++)
{
map.put(i, i);
}
System.out.println(mapName + "使用时间:" + (System.currentTimeMillis() - start));
map = null;
System.gc();
}
}
...全文
相关推荐
Java 综合案例 可编辑备忘录的日历程序 学生系统
这是几个重要的、非常有用的Java综合案例,里面有带有以文本形式的可编辑备忘录的日历程序,有详细的学生系统设计,有网络编程方面的实例,程序中各个模块划分详细,希望对大家有用!
Java设计源码.zip
Java设计
java中map集合的用法
java.util 中的集合类包含 Java 中某些最常用的类。 最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象元素列表。 List 适用于按数值索引访问元素的情形。 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。 从概念上而言,您可以将 List 看作是具有数值键的 Map。 而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系。本文将着重介绍核心 Java 发行套件中附带的 Map,同时还将介绍如何采用或实现更适用于您应用程序特定数据的专用 Map。
Java使用entrySet方法获取Map集合中的元素
主要为大家详细介绍了Java使用entrySet方法获取Map集合中的元素,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
java.util包
java.util包


非技术区
