HashMap,LinkedHashMap,TreeMap讀取大量資料效率的比較
@Test
public void test() {
Integer count =1000000;
Random random =new Random();
Map<String, String> map = new HashMap<String, String>();
for (int i = 0; i < count; i++) {
map.put(i+"", i+"");
}
long time1 = System.currentTimeMillis();
for (int i = 0; i < count; i++) {
map.get((random.nextInt(count)+1)+"");
}
long time2 = System.currentTimeMillis();
System.out.println("HashMap time:" + (time2 - time1));
////////////////////////////////////////////////////////////////////////
Map<String, String> linkedMap = new LinkedHashMap<String, String>();
for (int i = 0; i < count; i++) {
linkedMap.put(i+"", i+"");
}
time1 = System.currentTimeMillis();
for (int i = 0; i < count; i++) {
linkedMap.get((random.nextInt(count)+1)+"");
}
time2 = System.currentTimeMillis();
System.out.println("LinkedHashMap time:" + (time2 - time1));
////////////////////////////////////////////////////////////////////////
Map<String, String> treeMap = new TreeMap<String, String>();
for (int i = 0; i < count; i++) {
treeMap.put(i+"", i+"");
}
time1 = System.currentTimeMillis();
for (int i = 0; i < count; i++) {
treeMap.get((random.nextInt(count)+1)+"");
}
time2 = System.currentTimeMillis();
System.out.println("TreeMap time:" + (time2 - time1));
}
上述程式碼的執行結果:
HashMap time:641
LinkedHashMap time:703
TreeMap time:4040
如果讀取資料是有序的呢
@Test
public void test2() {
Integer count =1000000;
Random random =new Random();
Map<String, String> map = new HashMap<String, String>();
for (int i = 0; i < count; i++) {
map.put(i+"", i+"");
}
long time1 = System.currentTimeMillis();
for (int i = 0; i < count; i++) {
map.get(i+"");
}
long time2 = System.currentTimeMillis();
System.out.println("HashMap time:" + (time2 - time1));
////////////////////////////////////////////////////////////////////////
Map<String, String> linkedMap = new LinkedHashMap<String, String>();
for (int i = 0; i < count; i++) {
linkedMap.put(i+"", i+"");
}
time1 = System.currentTimeMillis();
for (int i = 0; i < count; i++) {
linkedMap.get(i+"");
}
time2 = System.currentTimeMillis();
System.out.println("LinkedHashMap time:" + (time2 - time1));
////////////////////////////////////////////////////////////////////////
Map<String, String> treeMap = new TreeMap<String, String>();
for (int i = 0; i < count; i++) {
treeMap.put(i+"", i+"");
}
time1 = System.currentTimeMillis();
for (int i = 0; i < count; i++) {
treeMap.get(i+"");
}
time2 = System.currentTimeMillis();
System.out.println("TreeMap time:" + (time2 - time1));
}
HashMap time:297
LinkedHashMap time:203
TreeMap time:438
總結:
在讀取大量資料的前提下
1、key是隨機的情況下獲取map的value時的效能表現 HashMap>LinkedHashMap>TreeMap
2、key是有序的情況下獲取map的value時的效能表現 LinkedHashMap>HashMap>TreeMap
相關文章
- TreeMap和HashMap的元素比較HashMap
- Java中HashMap,LinkedHashMap,TreeMap的區別[轉]JavaHashMap
- HashSet/HashMap、TreeSet/TreeMap、LinkedHashSet/LinkedHashMap 區別HashMap
- Java集合系列(四):HashMap、Hashtable、LinkedHashMap、TreeMap的使用方法及區別JavaHashMap
- Dapper, Ef core, Freesql 插入大量資料效能比較(二)APPSQL
- HashMap、LinkedHashMap、HashTable、HashSet筆記HashMap筆記
- HashMap與LinkedHashMap型別集合HashMap型別
- mysql資料庫時間型別datetime、bigint、timestamp的查詢效率比較MySql資料庫型別
- 訪問vector元素方法的效率比較
- 【MyBatis】幾種批量插入效率的比較MyBatis
- 主流資料庫比較資料庫
- 圖資料庫比較資料庫
- [20181213]ogg大量讀取操作.txt
- 三,TreeMap和HashMap,TreeSet和HashMap的區別以及方法使用上的不同HashMap
- difflib: Python 比較資料集Python
- HHDESK資料夾比較功能
- HashTable、ConcurrentHashMap、TreeMap、HashMap關於鍵值的區別HashMap
- 如何提升scrapy爬取資料的效率
- influxdb與傳統資料庫的比較UX資料庫
- LinkedHashMap原始碼解讀HashMap原始碼
- 77種資料建模工具比較
- spark讀取hbase的資料Spark
- 讀取JSON資料JSON
- 讀取CSV資料
- 淺談前端MOCK資料工具比較前端Mock
- mysql資料庫中decimal資料型別比較大小MySql資料庫Decimal資料型別
- 資料庫系列:MySQL引擎MyISAM和InnoDB的比較資料庫MySql
- 區塊鏈與分散式資料庫的比較區塊鏈分散式資料庫
- Jsp讀取MySQL資料JSMySql
- python讀取MySQL資料PythonMySql
- Spark讀取MySQL資料SparkMySql
- 磁碟資料庫與記憶體資料庫的特點比較資料庫記憶體
- 分享幾個比較提高工作效率的軟體
- 併發程式設計:DEMO:比較Stream和forkjoin框架的效率程式設計框架
- sqlserver讀取oracle資料庫資料SQLServerOracle資料庫
- 利用反射讀取資料庫資料反射資料庫
- HashSet與HashMap比較——新增物件已存在處理方式一樣?HashMap物件
- 比較 Apache Hadoop 資料儲存格式 - techwellApacheHadoop