新浪微博2020Java校招笔试题

时间:2019-08-31
本文章向大家介绍新浪微博2020Java校招笔试题,主要包括新浪微博2020Java校招笔试题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

 第二题是实现一个lru cache , 我想到了linkedHashMap , 但是没有找到合适的api

自己撸了一个,通过了66%

 1 package interview;
 2 
 3 import java.util.HashMap;
 4 import java.util.LinkedHashMap;
 5 import java.util.LinkedList;
 6 
 7 /**
 8  * @program: Leetcode
 9  * @description:
10  * @create: 2019-08-31 16:32
11  **/
12 public class Sina2 {
13 
14     int cap;
15     HashMap<Integer,Integer> values = new HashMap<>();
16     HashMap<Integer,Boolean> exist = new HashMap<>();
17     LinkedList<Integer> queue = new LinkedList<>();
18 
19     public Sina2(int capacity) {
20         this.cap = capacity;
21     }
22 
23     public int get(int key) {
24         if (exist.get(key)){
25             int temp = values.get(key);
26             queue.remove((Integer) key);
27             queue.addFirst((Integer) key);
28             System.out.println(temp);
29             return temp;
30         }else {
31             System.out.println(-1);
32             return -1;
33         }
34     }
35 
36 
37     public void put(int key, int value) {
38         if (queue.size()  == cap){
39             int kk = queue.get(cap-1);
40             //exist.remove(kk);
41             exist.put(kk,false);
42             values.put(key,value);
43             exist.put(key,true);
44             queue.removeLast();
45             queue.addFirst(key);
46         }else {
47             queue.addFirst(key);
48             values.put(key,value);
49             exist.put(key,true);
50         }
51 
52     }
53 
54     public static void main(String[] args) {
55         Sina2  sina2 = new Sina2(2);
56         sina2.put(1,1);
57         sina2.put(2,2);
58         sina2.get(1);
59         sina2.put(3,3);
60         sina2.get(2);
61         sina2.put(4,4);
62         sina2.get(1);
63         sina2.get(3);
64         sina2.get(4);
65 
66     }
67 }

原文地址:https://www.cnblogs.com/vector11248/p/11439854.html