基本概念:https://www.cnblogs.com/xiaoxi/p/6170590.html

遇到问题:

1、构造方法

public static LinkedHashMap<String,Long> lhm= new LinkedHashMap<String,Long>(16, 0.75f, true);  //一定要加true,不然不会按照访问顺序排序。

2、访问方式

使用get(Object o)方式会改变该KEY值访问顺序,必须使用如下方法访问:

LinkedHashMap<String,Long> lhm = new LinkedHashMap<String,Long>(16, 0.75f, true);
Set<Map.Entry<String, Long>> set = lhm.entrySet();
Iterator<Map.Entry<String, Long>> iterator = set.iterator();
synchronized (iterator) {
while (iterator.hasNext())
{
Entry<String, Long> entry = iterator.next();
long vintime = entry.getValue();
System.out.print(vintime+" ");
}
}

3、该数据结构非线程安全,多线程使用必须加锁

1) get()

2) put()

3) 遍历

import java.util.LinkedHashMap;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class LRULinkedHashMap<K, V> extends LinkedHashMap<K, V> {
/**
*
*/
private static final long serialVersionUID = -952299094512767664L;
private final int maxCapacity;
private static final float DEFAULT_LOAD_FACTOR = 0.75f;
private final Lock lock = new ReentrantLock();

public LRULinkedHashMap(int maxCapacity) {
super(maxCapacity, DEFAULT_LOAD_FACTOR, true);
this.maxCapacity = maxCapacity;
}

@Override
protected boolean removeEldestEntry(java.util.Map.Entry<K, V> eldest) {
return size() > maxCapacity;
}

@Override
public V get(Object key) {
try {
lock.lock();
return super.get(key);
} finally {
lock.unlock();
}
}
//可以根据实际情况,考虑对不同的操作加锁
@Override
public V put(K key, V value) {
try {
lock.lock();
return super.put(key, value);
} finally {
lock.unlock();
}
}

}

最新文章

  1. C#命名规则和编码规范
  2. shell 转义字符的写法
  3. bootstrap 时间选择器 datetime
  4. Repeater分页
  5. C#窗体间通讯的几种处理方法
  6. C++中#include的工作原理
  7. instance “error” 了怎么办?- 每天5分钟玩转 OpenStack(159)
  8. 【 js 基础 】Javascript “继承”
  9. linux UART
  10. react-router 3 中的 useRouterHistory(createHistory) 到了 react-router 4 变成了什么?
  11. memmove 和 memcpy的区别以及处理内存重叠问题
  12. vue版 弹幕
  13. ubuntu16中部署web项目到tomcat,xft和securecrt连接到ubuntu16(待续。。。)
  14. DevOps利器- Hygieia平台开发部署
  15. 微信小程序-flex布局中align-items和align-self区别
  16. 无人驾驶之激光雷达&amp;摄像头(主要from 速腾CEO 邱纯鑫分享)
  17. GOOGLE突破图书馆入口IP限制之技巧
  18. 【转】在MAC下配置MySQL 5.7 数据库的编码问题
  19. 论文笔记:目标检测算法(R-CNN,Fast R-CNN,Faster R-CNN,FPN,YOLOv1-v3)
  20. HDU 4750 Count The Pairs ★(图+并查集+树状数组)

热门文章

  1. If you are tired...
  2. php验证码处理
  3. .NET MVC强类型参数排除和包含属性
  4. C# FTPHelper帮助类
  5. poj 3140 树形去边差异最小
  6. 数据库navicat中limit函数的用法
  7. Java中的各种锁
  8. php session 存储到redis
  9. (12)JavaScript之[事件][事件监听]
  10. DXperience Winforms新版本13.2功能预览