EnumMap类是Java集合框架的一个成员,它不是同步的。 EnumMap是一个有序的集合,它们按照键的自然顺序被维护(键的自然顺序是指枚举常量在枚举类型中的声明顺序)。 EnumMap比HashMap快很多。 每个EnumMap实例的所有键必须是同一枚举类型的键。 EnumMap不允许插入空键,如果我们试图插入空键,它将抛出NullPoint...
Map典型的实现类是HashMap、Hashtable(HashMap子类还有LinkedHashMap)、SortedMap子接口及实现类TreeMap、WeakHashMap、IndentityHashMap等。 Map有一个内部类Entry,该类封装了key-value对,有如下三个方法:K getKey();:获取Entry中的key值; V getValue();:获取Entry中的value值; V setValue(V ...
因为最近工作太忙了,连续的晚上支撑和上班,因此没有精力来写下这篇博客,今天上午正好有一点空,因此来复习一下不太常用的集合体系大家族中的几个类:WeakHashMap&EnumMap&LinkedHashMap&LinkedHashSet,以便用到的时候不至于是什么都不知道。好了,言归正传,下面我们开始依次学习下: 一、WeakHashMap 1.WeakHashMap的...
importjava.util.HashMap;importjava.util.Map;// 定义枚举类型enumDestination{PARIS(1000),TOKYO(800),NEW_YORK(1200),LONDON(900);privatefinalintcost;// 成本标签Destination(intcost){this.cost=cost;}publicintgetCost(){returncost;}}// 主类publicclassTravelPlanning{// 创建一个HashMap来存储目的地和...
1 简介 我们知道Map只是一个接口,它有多种实现,Java中最常用的是HashMap了。而本文想讲述的是另一个实现:EnumMap。它是枚举类型的Map,要求它的Key值都必须是
枚举类默认实现于java.lang.Enum类,并且不能被继承于其他父类; 非抽象的枚举类默认使用final修饰,所以枚举类不能被派生出子类; 枚举类的所有实例都必须在类中的第一行显示列出,他们默认是public static final的。 使用 没有构造器的枚举 代码语言:javascript 代码运行次数:0 运行 复制 public enum Season { /**...
利用软引用和弱引用解决OOM问题:用一个HashMap来保存图片的路径和相应图片对象关联的软引用之间的映射关系,在内存不足时,JVM会自动回收这些缓存图片对象所占用的空间,从而有效地避免了OOM的问题. 通过软引用实现Java对象的高速缓存:比如我们创建了一Person的类,如果每次需要查询一个人的信息,哪怕是几秒中之前刚刚查询...
Map<EnumKey, V> m = Collections.synchronizedMap(new EnumMap<EnumKey, V>(...)); Implementation note: All basic operations execute in constant time. They are likely (though not guaranteed) to be faster than theirHashMapcounterparts. This class is a member of theJava Collections Framework. ...
private static Map<String,byte[]> caches=new WeakHashMap<>(); public static void main(String[]args) throws InterruptedException { for (int i=0;i<100000;i++){ caches.put(i+””,new byte[1024*1024*10]); System.out.println(“put num: ” + i + ” but caches size:” + caches.siz...
import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class CacheManager<K, V> { private Map<K, V> cache = new HashMap<>(); private Lock lock = new ReentrantLock(); public void put(K key, V val...