From 427578c8a214c54882702c943d8d47e556331257 Mon Sep 17 00:00:00 2001 From: xiongraorao Date: Mon, 10 Sep 2018 12:03:30 +0800 Subject: [PATCH] 1 --- code/src/main/java/com/raorao/Test.java | 11 ------ .../java/com/raorao/java/althorithm/LRU.java | 36 +++++++++++++++++++ .../java/com/raorao/java/load/BreakAgent.java | 1 - interview/struct/algorithm.md | 2 ++ 4 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 code/src/main/java/com/raorao/java/althorithm/LRU.java diff --git a/code/src/main/java/com/raorao/Test.java b/code/src/main/java/com/raorao/Test.java index 6e904f62..e909e899 100644 --- a/code/src/main/java/com/raorao/Test.java +++ b/code/src/main/java/com/raorao/Test.java @@ -1,10 +1,6 @@ package com.raorao; -<<<<<<< HEAD -import java.util.Scanner; -======= import java.util.HashMap; ->>>>>>> 1c2b8c5ebb8faea5298e53672bf08b78be1c7c89 /** * . @@ -17,15 +13,8 @@ public class Test { private int a; public static void main(String[] args) { -<<<<<<< HEAD - String[] s = new String[10]; - System.out.println(s.length); - System.out.println(s[0]); - Scanner scanner = new Scanner(System.in); -======= ->>>>>>> 1c2b8c5ebb8faea5298e53672bf08b78be1c7c89 } } diff --git a/code/src/main/java/com/raorao/java/althorithm/LRU.java b/code/src/main/java/com/raorao/java/althorithm/LRU.java new file mode 100644 index 00000000..460716f6 --- /dev/null +++ b/code/src/main/java/com/raorao/java/althorithm/LRU.java @@ -0,0 +1,36 @@ +package com.raorao.java.althorithm; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * 缓存算法的实现 . + * + * LinkedHashMap的一个构造函数,当参数accessOrder为true时,即会按照访问顺序排序,最近访问的放在最前,最早访问的放在后面 + * + * @author Xiong Raorao + * @since 2018-09-10-11:53 + */ +public class LRU extends LinkedHashMap { + + private final int MAX_CACHE_SIZE; + + public LRU(int cacheSize) { + super((int) Math.ceil(cacheSize / 0.75) + 1, 0.75f, true); + MAX_CACHE_SIZE = cacheSize; + } + + @Override + protected boolean removeEldestEntry(Map.Entry eldest) { + return size() > MAX_CACHE_SIZE; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + for (Map.Entry entry : entrySet()) { + sb.append(String.format("%s:%s ", entry.getKey(), entry.getValue())); + } + return sb.toString(); + } +} diff --git a/code/src/main/java/com/raorao/java/load/BreakAgent.java b/code/src/main/java/com/raorao/java/load/BreakAgent.java index 3f00b4ca..d58b5e61 100644 --- a/code/src/main/java/com/raorao/java/load/BreakAgent.java +++ b/code/src/main/java/com/raorao/java/load/BreakAgent.java @@ -14,7 +14,6 @@ public class BreakAgent { public static void main(String[] args) throws ClassNotFoundException { - TreeSet } public static class Object { diff --git a/interview/struct/algorithm.md b/interview/struct/algorithm.md index 374e7c94..b1df44da 100644 --- a/interview/struct/algorithm.md +++ b/interview/struct/algorithm.md @@ -26,3 +26,5 @@ # LRU实现 最小访问的算法实现 + +- [LRU缓存实现(Java)](https://www.cnblogs.com/lzrabbit/p/3734850.html) \ No newline at end of file