在Java中缩小LinkedHashMap
发布时间:2020-12-15 03:00:12 所属栏目:Java 来源:网络整理
导读:你怎么能缩小LinkedHashMap?我重写了removeEldestEntry方法,但只在插入新值时才调用此方法一次.所以没有改变使地图变小这种方式. LinkedHashMap只提供一个普通的迭代器,并且没有任何removeLast或listIterator方法,那么如何找到最后的1000个条目并删除它们呢
你怎么能缩小LinkedHashMap?我重写了removeEldestEntry方法,但只在插入新值时才调用此方法一次.所以没有改变使地图变小这种方式.
LinkedHashMap只提供一个普通的迭代器,并且没有任何removeLast或listIterator方法,那么如何找到最后的1000个条目并删除它们呢? 我能想到的唯一方法是迭代整个事情.但那可能需要很长时间…… 每次我想删除少量元素时创建一个新地图也会破坏内存. 当removeEldestEntry方法中的maxSize减少时,可能会删除Iterator的第一个值,然后重新插入它们.然后重新插入将踢出最旧的值.这是非常难看的代码……有什么更好的想法吗? 编辑:Sry迭代顺序是最年轻的.这很容易 解决方法
对于LinekdHashMap,迭代器将从最旧到迭代迭代.如果要将LinkedHashMap缩小到可以使用以下内容的大小,则可以使用.
Map<K,V> lhm = int desiredSize = for(Iterator iter = lhm.keySet().iterator();iter.hasNext()) { if(lhm.size() <= desiredSize) break; iter.remove(); } 每个条目删除大约需要20 ns. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- springboot json时间格式化处理的方法
- java – Maven构建失败并出现错误:无法在指定路径找到工件
- JAVA解析XML与C#解析XML(DOM,SAS,JDOM,DOM4J)
- java – 什么是ImageObserver?
- 多线程 – “任何”代码的Perl异步任务,无论它是什么?
- java - 设计模式
- java – Spring,NotReadablePropertyException和Glassfish版
- doctrine-orm – Doctrine 2:写一个合适的Subselect
- java – GCM:如何将心跳发送到GCM服务器
- java – 实践中的REST真的可以是无状态的吗?