1. 程式人生 > >Map與List查詢效能比較

Map與List查詢效能比較

@Test
 public void mapTest(){
  /*
   * 比較順序查詢和雜湊查詢的效能
   */
  //建立線性表集合
  List<String> list=
   new ArrayList<String>();
  //建立散列表集合
  Map<String, Integer> map=
   new HashMap<String, Integer>();
  //向集合中同時新增資料
  for(int i=0; i<500000; i++){
   String key="Tom"+i;
   list.add(key);
   //將key,value成對的加入到map
   map.put(key, i);//Tom0, 0
  }
  //被查詢的 key
  String key = "Tom499999";
  //線性表中順序查詢:
  long t1=System.nanoTime();
  int i=list.indexOf(key);
  long t2=System.nanoTime();
  System.out.println(i+","+(t2-t1)); //499999,11245379
  
  //散列表中的雜湊查詢:
  t1=System.nanoTime();
  int n = map.get(key);
  t2=System.nanoTime();
  System.out.println(n+","+(t2-t1)); //499999,15317
 
 }

//散列表效能更高 

1,查詢

     根據key的雜湊值(hashcode())對映到雜湊陣列的下標再根據key的equals方法逐一比較key,最後找到value。

2,新增/替換:

    根據key的雜湊值(hashCode())對映到雜湊陣列的下標,再根據key的equals方法逐一比較key,最後找到插入(替換)位置,插入(替換)key-value資料。

記住:無論查詢還是新增都是先用key的hashCode再使用key的equals方法

注意:使用散列表時候,作為key的物件,必須重寫equals和hashCode。

相關推薦

MapList查詢效能比較

@Test  public void mapTest(){   /*    * 比較順序查詢和雜湊查詢的效能    */   //建立線性表集合   List<String> list=    new ArrayList<String>();   /

PrestoSpark SQL查詢效能比較

1. 數倉環境 指標名稱 指標值 資料總量 24T 分割槽數量 24 儲存型別 Text Spark SQL版本 2.2.0-218 Pres同版本 Presto CLI 04fb3c3-dirty 2. 分頁查詢 所有的計算

(轉載)STL mapBoost unordered_map的比較

combine 排序 spa using 比例 遍歷 tail include 不用 原鏈接:傳送門 今天看到 boost::unordered_map,它與 stl::map的區別就是,stl::map是按照operator<比較判斷元素是否相同,以及比較元素的大

array_push $arr[]=$value 效能比較分析

本文簡要分析一下php中array_push與$arr[] = $value兩種將元素加入陣列末尾的方法的效能 1. array_push方法 array_push 方法,將一個或多個元素壓入陣列的末尾。array_push() 將array當成一個棧,並將傳入的變數壓入array的末尾。a

MapList結合而成的強大的資料結構

package com.zhu.map; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Se

HAWQHive查詢效能對比測試

一、實驗目的        本實驗通過模擬一個典型的應用場景和實際資料量,測試並對比HAWQ內部表、外部表與Hive的查詢效能。二、硬體環境1. 四臺VMware虛機組成的Hadoop叢集。2. 每臺機器配置如下:(1)15K RPM SAS 100GB(2)Intel(R)

指標引用的效能比較

我們先來看一下傳指標與傳引用的效率方面的對比吧 本質上來說了,傳引用是一個變數的別名而已。並沒有開闢新的空間。而指標了是指向一個空間對應一個空間的地址 好吧,我們分別通過兩者效率,和本質方面看一下兩者之間的區別吧。 -首先看一下兩者的效率 看程式碼 #inclu

SolrMySQL查詢效能對比

測試環境 本文簡單對比下Solr與MySQL的查詢效能速度。 測試資料量:10407608     Num Docs: 10407608 普通查詢 這裡對MySQL的查詢時間都包含了從MySQL Server獲取資料的時間。 在專案中一個最常用的查詢,查詢某段時間內的資料,SQL查詢獲取資料,30s

lucene3.5mysql 查詢效能的對比

由於最近做畢設,需要做一個商品查詢模組,用到了lucene來做商品索引的查詢,原因為: 1.marks(商品標籤)欄位含有多個標籤,當針對某個標籤查詢時,或許只能用like 查詢,這樣的查詢慢! 2.沒用過lucene,想用來測試下效能 可能結果早就顯而易見,但是這次測

docker虛擬機器效能比較

概要 docker是近年來新興的虛擬化工具,它可以和虛擬機器一樣實現資源和系統環境的隔離。本文將主要根據IBM發表的研究報告,論述docker與傳統虛擬化方式的不同之處,並比較物理機、docker容器、虛擬機器三者的效能差異及差異產生的原理。

MySQL的MyISAM和InnoDB的大資料量查詢效能比較

因為工作關係,有一個超過11億記錄的MySQL資料庫,之前一直以為MyISAM引擎的查詢效能會超過InnoDB,這兩天特意測試了一下,不過因為資料量太大,轉換引擎就花了幾天時間。 測試環境: DELL 860伺服器,CPU Xeon3210, 記憶體8G MySQL版本5

原生ServletSpring Controller效能比較

  在實際專案工作,有同事提出,Java原生的Servlet效能(響應速度與併發數)要比封裝過的Spring Controller高,基於這點,樓主用Apache的ab工具,對兩個簡單的應用做1000併發壓力測試,檢視兩者的響應速度與併發數、平均響應時間等引數。 原生

Python霧裡看花-listset十萬資料查詢效能對比

# -*- coding: utf-8 -*- import random import time num = 100000 listA = [random.randint(1, i) for i in range(1, num)] setB = set() while len(set

gmap,以及sync.Map效能比較

gf框架提供了幾個非常實用的併發安全容器,其中gmap就是專案開發中最常用的一個。 從執行效率上考慮,基於不同的需求場景,選擇合適的型別結構體,其執行效率是不一樣的,以下使用基準測試來對比各個型別的寫入效能(測試程式碼): john@johnstation:~/Wor

程式設計雜談——std::vectorList<T>的效能比較

昨天在比較完C++中std::vector的兩個方法的效能差異並留下記錄後——程式設計雜談——使用emplace_back取代push_back,今日嘗試在C#中測試對應功能的效能。 C#中對應std::vector的資料結構為List。更多的對應關係可以參照下面: std::vector - List s

Spark 中 map flatMap 的比較

通過一個實驗來看Spark 中 map 與 flatMap 的區別。   步驟一:將測試資料放到hdfs上面 hadoopdfs -put data1/test1.txt /tmp/test1.txt 該測試資料有兩行文字:   步驟二:在Spark

CArrayCMap寫及查詢資料比較

寫16W個指標資料,Key值為字串,值為指標,時間秒 寫:        寫記錄數     時間           查詢次數    時間 CArray: &nbs

Greenplum 點查(按PK查詢)效能提升空間

標籤 PostgreSQL , Greenplum , 點查 , 按PK查詢 背景 點查,基於PK的查詢或者OLTP類查詢,實際上並不是GPDB 擅長的,GPDB擅長的是海量的OLAP。 不過在企業、政府等視窗服務類業務,併發實際上並不高,如果GPDB的點查效能達到一定的效能時,

(八)Mybatis返回List或者Map以及模糊查詢

注:程式碼已託管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning,專案是mybatis-05-CURD,需要自取,需要配置maven環境以及mysql環境,覺得有用可以點個小星星,Thanks~ 首先獲取sqlSession例

Mysql 索引 多表查詢效能優化

最近做專案需要用到Luence Whoosh,要定時從資料庫中索引出資料來供檢索,但是在索引中設計多表查詢,速度較慢,因為強迫症,想要做效能優化,因此把Mysql的核心又翻出來研究一遍。 關於MySQL索引的好處,如果正確合理設計並且使用索引的MySQL是一輛蘭博基尼的話,那麼