1. 程式人生 > >使用泛型實現(LRU)快取

使用泛型實現(LRU)快取

今天面試的筆試題有道筆試題用泛型實現快取

這是一種混合的資料結構,我們需要在雜湊表的基礎上建立一個連結串列。但是Java已經為我們提供了這種形式的資料結構-LinkedHashMap!它甚至提供可覆蓋回收策略的方法。唯一需要我們注意的事情是,改連結串列的順序是插入的順序,而不是訪問的順序。但是,有一個建構函式提供了一個選項,可以使用訪問的順序

import java.util.LinkedHashMap;
import java.util.Map;
 
public LRUCache<K, V> extends LinkedHashMap<K, V> {
  private int cacheSize;
 
  public LRUCache(int cacheSize) {
    super(16, 0.75, true);
    this.cacheSize = cacheSize;
  }
 
  protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
    return size() >= cacheSize;
  }
}
轉自:http://www.importnew.com/16264.html

相關推薦

使用實現LRU快取

今天面試的筆試題有道筆試題用泛型實現快取這是一種混合的資料結構,我們需要在雜湊表的基礎上建立一個連結串列。但是Java已經為我們提供了這種形式的資料結構-LinkedHashMap!它甚至提供可覆蓋回收策略的方法。唯一需要我們注意的事情是,改連結串列的順序是插入的順序,而不是

C#約束 轉載

六種型別的約束: T:結構 型別引數必須是值型別。可以指定除 Nullable 以外的任何值型別。有關更多資訊,請參見使用可空型別(C# 程式設計指南)。 T:類 型別引數必須是引用型別,包括任何類、介面、委託或陣列型別。

侯捷 STL和程式設計

本篇記錄學習《侯捷 STL和泛型程式設計》 1、認識headers、版本、重要資源 C++標準庫的70%是C++標準模板庫,還有其他部分佔30%左右,C++標準模板庫包含演算法,分配器等六大部分。 2、STL體系結構基礎介紹 (1)前閉後開區間 [ ),例如 物件都有c.beg

C#集合與非集合

轉自部落格: http://www.cnblogs.com/zhxhdean/archive/2011/05/18/2050186.html 在.NET平臺最初發布時,程式設計師使用System.Collections名稱空間下的ArrayList,HashTable,Queue,S

CoreJava讀書筆記--程式設計

泛型程式設計(二) 泛型程式碼和虛擬機器 虛擬機器沒有泛型型別物件。這句話可以理解為虛擬機器不認識泛型類,它仍然只認識普通類。 (一)型別擦除 什麼是型別擦除? 無論何時定義一個泛型型別,都自動提供了一個相應的原始型別。原始型別的名字就是刪去型別引數後的泛型型別名。

小白的JAVA之路——講解

從本小結開始,我們就要開始理解泛型的原理咯。在學習之前,我們先要了解知識,以便幫助我們更好的理解泛型。 泛型程式碼和虛擬機器:虛擬機器是沒有泛型物件的,所有物件都是屬於普通類的,因此虛擬機器在解析泛型程式碼時,會產生一個相應的原始型別。 原始型別:  每當我們定義一個泛型

小白的JAVA之路——講解

由於我學習java的時候跳過了UI開發的知識學習,因此對於元件Compoent類會有點陌生,不過這並不影響我們講解泛型機制的原理,現在,讓我們來繼續學習泛型機制。 4.1 呼叫遺留程式碼 java中的遺留程式碼是指編寫於JAVA SE5.0之前的程式碼,一直遺留到現在。那

侯捷 STL和程式設計

本篇記錄學習《侯捷 STL和泛型程式設計》下半部分。 16、vector深度探索 17、array、forward_list深度探索 18—19、deque、queue和 stack深度探索 20、RB-tree 深度探索 21、 set、multi

effective C++筆記--模板與程式設計

文章目錄 請使用traits classes表現型別資訊 認識模板超程式設計 請使用traits classes表現型別資訊 . traits並不是C++的關鍵字或是預先定義好的構件,它們是一種技術,也是一個C++程式設計師共同遵守的協議

effective C++筆記--模板與程式設計

文章目錄 運用成員函式模板接受所有相容型別 需要型別轉換時請為模板定義非成員函式 運用成員函式模板接受所有相容型別 . 真實指標做的很好的一件事是支援隱式轉換,派生類的指標可以指向基類的指標,指向非常量物件的指標可以指向轉換成常量物件的指

effective C++筆記--模板與程式設計

文章目錄 瞭解隱式介面和編譯器多型 瞭解typename的雙重意義 學習處理模板化基類內的名稱 將與引數無關的程式碼抽離template 瞭解隱式介面和編譯器多型 . 面向物件程式設計世界總是以顯式介面和執行期多型解決問題。比

C++ STL標準庫與程式設計

泛型程式設計,就是使用模板為主要工具來編寫程式。其中沒有太多的面向物件的觀念,不涉及虛擬函式的使用。 使用C++標準庫 C++標準庫:以程式碼形式給出,放於各種標頭檔案( header files )內,經過編譯後才能使用。 所有新式的 headers 內的元件封裝於 namespace

程式設計

Java中增加泛型之前,泛型是使用繼承實現的(通用的Object) 這樣,get一個值的時候要進行強制型別轉換 add的時候沒有錯誤檢查,可以新增任何類的物件,不安全 加入型別引數以後,get直接拿到型別,不需要進行強制型別轉換 add的時候直接檢測,插入型別錯誤直接報錯,更加安全,可讀性好

Java 總結:萬用字元的使用

簡介 前兩篇文章介紹了泛型的基本用法、型別擦除以及泛型陣列。在泛型的使用中,還有個重要的東西叫萬用字元,本文介紹萬用字元的使用。 這個系列的另外兩篇文章: Java 泛型總結(一):基本用法與型別擦除 Java 泛型總結(二):泛型與陣列 陣列的協變 在瞭解萬用字

fastJson轉換為List

在處理json資料時,會遇到將json串轉成javaBean的情況,這時候用fastJson的JSONObject.parseObject(text, clazz)方法很好用,不過轉換為類似List<T> 、Map<Obj,Obj>、PageInfo&

IL2CPP 深入講解:共享

L2CPP 深入講解:泛型共享 IL2CPP INTERNALS: GENERIC SHARING IMPLEMENTATION 作者:JOSH PETERSON 翻譯:Bowie 這是 IL2CPP深入講解的第五篇。在上一篇中,我們有說到由IL2CPP產生的C++程式

模板與程式設計--《C++ primer》

 通常在呼叫普通函式時,我們只要做到將函式的宣告放到其定義的前面,保證編譯器先掌握到函式的宣告,因此我們會把其函式宣告放到標頭檔案,而其定義放到原始檔當中;但是模板不同,為了生成一個例項化版本,編譯器需要掌握函式模板或類模板成員函式的定義,所以模板標頭檔案通常既包括宣告

template,實現閹割版的優先佇列一次簡單的嘗試

水完棧和佇列之後,感覺常用的優先佇列也不錯,內部的排序是堆排序,感覺也不是很難,就直接寫上了,但是實現的時候出現了一些問題,幸好有學長在旁邊,幫助我解決了問題,在此感謝LYG學長; 對於排序,仍然自定義型別,然後對於優先順序,進行過載,寫完這個之後感覺對泛型的運用瞭解了一些,對堆的感覺也更強了點

異端審判器!一個文字聚類模型的實現1

給你的入侵檢測系統提供一個靈感。 如果給你一大堆使用者輸入,裡面有大量的中文地名,像是“北京”、“成都”、“東莞”,不幸的是,其中也混有一些羅馬地名,比如 “Singapore”、“New York”、“Tokyo”。你的任務是將它們分開,你會如何去做? 當然,有

異端審判器!一個文字聚類模型的實現2

上文連結:異端審判器!一個泛用型文字聚類模型的實現(1) 上回,我們提出了一種只要輸入一堆字串,就能根據字串的構造挑揀出“少數派”,以識別異常引數的構想。我們將它稱作“異端審判”。 前文中我們已經定義好了一些必要概念,並寫出了函式實現。我們的程式遞進地量化了字元之間的差異、字串之間的差異,最終得