是否可以在Java中创建一个弱引用,其对象只有在指定条件返回true时才能发送到垃圾收集器?假设我有一个类似于缓存的东西,它将ID号映射到一些数据:Mapcache=newHashMap();SomeData有两个重要的方法-voidupdateTime(),它只是将一个内部变量设置为当前时间,以及booleancanBeDeleted(),它检查对象在过去10分钟内是否被使用过(只需比较当前时间和保存的时间加上10分钟)。如果在这段时间内未使用它,则该方法返回true并且可以从缓存中删除该对象...但是,当我使用弱引用而不是强引用创建缓存时:Map>cache=newHashMap(
我想删除LinkedHashSet中最早的成员,我知道有一个removeEldestEntry方法我必须重写(JavadocforremoveEldestEntry),但我想我必须定义initialcapacity和loadfactor我不在乎,我只是想删除最近最少访问的元素(这里通过访问我的意思是当它已经在集合中或被读取时被put)有什么方法可以不覆盖removeEldestEntry吗? 最佳答案 Iknowthatthere'saremoveEldestEntrymethodthatIhavetooverride这个说法是错误
我知道这个问题的答案很容易在互联网上找到。我需要知道如果我选择不removeEldestEntry会发生什么。以下是我的代码:packagecollection;importjava.util.*;publicclassMyLinkedHashMap{privatestaticfinalintMAX_ENTRIES=2;publicstaticvoidmain(String[]args){LinkedHashMaplhm=newLinkedHashMap(MAX_ENTRIES,0.75F,false){protectedbooleanremoveEldestEntry(Map.Ent
我需要一个固定大小的队列。当我添加一个元素并且队列已满时,它应该会自动删除最旧的元素。在Java中是否有现成的实现? 最佳答案 其实是LinkedHashMap做你想要的。您需要重写removeEldestEntry方法。最多包含10个元素的队列示例:queue=newLinkedHashMap(){@OverrideprotectedbooleanremoveEldestEntry(Map.Entryeldest){returnthis.size()>10;}};如果“removeEldestEntry”返回true,则从map中
我需要一个固定大小的队列。当我添加一个元素并且队列已满时,它应该会自动删除最旧的元素。在Java中是否有现成的实现? 最佳答案 其实是LinkedHashMap做你想要的。您需要重写removeEldestEntry方法。最多包含10个元素的队列示例:queue=newLinkedHashMap(){@OverrideprotectedbooleanremoveEldestEntry(Map.Entryeldest){returnthis.size()>10;}};如果“removeEldestEntry”返回true,则从map中