Hashmap怎么设置固定大小,当内容占满时,每当插入新数据时,则去掉第一条数据,像队列那样。谢谢!

Hashmap怎么设置固定大小,当内容占满时,每当插入新数据时,则去掉第一条数据,像队列那样。谢谢!,第1张

Hashmap本身做这个功能没有听说过,具体有没有也不清楚,但是我这里可以给你提供一种方案:

(1)使用LinkedHashMap来记录数据,这种map是可以记录key的先后顺序的。

(2)在每次向这个map put数据时:A)检测一下map的大小,是否等于你预设的大小;B)检测要put的key是否不存在于map中。

(3)当同时满足这两个条件时,移除map中的第一个key。移除第一个key的方法是去keySet中的第一个key,这是因为LinkedHashMap的key是按插入顺序排序的。

Set<String>keySet = hashMap.keySet()

Iterator<String>iterator = keySet.iterator()

String firstKey = "";

if (iterator.hasNext()) {

String firstKey = iterator.next()

}

if(!"".equals(firstKey)){

map.remove(firstKey)

}

(4)最后插入你需要的就可以了。

安卓hashmap占用内存过大解决方法如下:

1、可以通过在创建HashMap时指定初始容量和负载因子,来控制HashMap的大小和扩容时机,从而减少内存的占用。

2、可以考虑使用其他数据结构,如数组或者List等,来代替HashMap。

HashMap本身没有什么问题,有没有问题取决于你是如何使用它的。比如,你在一个线程里初始化了一个HashMap然后在多个其他线程里对其进行读取,这肯定没有任何问题。有个例子就是使用HashMap来存储系统配置项。当有多于一个线程对HashMap进行修改 *** 作的时候才会真正产生问题,比如增加、删除、更新键值对的时候。因为put() *** 作可以造成重新分配存储大小(re-sizeing)的动作,因此有可能造成无限循环的发生,所以这时需要使用Hashtable或者ConcurrentHashMap,而后者更优。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11344935.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存