(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,而后者更优。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)