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
- 深入淺出 Map 的實現(HashMap、HashTable、LinkedHashMap、TreeMap)HashMap
- XML資料讀取方式效能比較XML
- MySQL大量資料入庫的效能比較MySql
- Java集合系列(四):HashMap、Hashtable、LinkedHashMap、TreeMap的使用方法及區別JavaHashMap
- MySQL大量資料入庫的效能比較(分割槽)MySql
- MySQL大量資料插入各種方法效能分析與比較MySql
- TreeMap get獲取資料為nullNull
- Dapper, Ef core, Freesql 插入大量資料效能比較(二)APPSQL
- 轉:Java中的HashSet, TreeSet, HashMap, TreeMapJavaHashMap
- Java中對HashMap的深度分析與比較JavaHashMap
- HashMap、LinkedHashMap、HashTable、HashSet筆記HashMap筆記
- HashMap與LinkedHashMap型別集合HashMap型別
- Java中對HashMap的深度分析與比較(轉)JavaHashMap
- 訪問vector元素方法的效率比較
- 【MyBatis】幾種批量插入效率的比較MyBatis
- xmltype資料類演練及讀取效率測算XML
- 圖資料庫比較資料庫
- 資料結構比較資料結構
- 主流資料庫比較資料庫
- 三,TreeMap和HashMap,TreeSet和HashMap的區別以及方法使用上的不同HashMap
- Java中HashMap和TreeMap的區別深入理解JavaHashMap
- HashMap、TreeMap、Hashtable、HashSet和ConcurrentHashMap區別HashMap
- HHDESK資料夾比較功能
- 如何提升scrapy爬取資料的效率
- oracle資料庫兩表資料比較Oracle資料庫
- mysql資料庫時間型別datetime、bigint、timestamp的查詢效率比較MySql資料庫型別
- Mysql pg oracle三種資料庫獲取月份、周的函式比較MySqlOracle資料庫函式
- HashTable、ConcurrentHashMap、TreeMap、HashMap關於鍵值的區別HashMap
- 比較兩個資料庫的差異資料庫
- 比較兩個表的資料差別
- 關閉資料庫比較好的方法資料庫
- 77種資料建模工具比較
- 資料庫比較 PostgreSQL vs MongoDB資料庫SQLMongoDB
- 幾種常用資料庫比較資料庫
- Mysql取隨機資料效率測試(400W條中讀取100條)MySql隨機