計算機中的Map接口

2020-12-13 老楊分享

上集說到Set,List,現在輪到Map。Map也是一種容器。

談到容器,我們不要認為容器只有一種,我們把容器當作一個概念。就好比我們在生活中想到裝東西的地方,我們可以想到缸,桶,盤,一切能裝東西的容器。

在計算機中想到集合和容器,我們應該想到List,Set,Queue隊列,Map這幾個集合容器。而我們在其中這幾個當中選取適合裝我們所需的數據。舉個生活的小李子,提水,你想到的是什麼?你第一反應想到的應該是桶這一類的東西,我覺得你不會想到用缸這一龐然大物。以現實生活中的例子反應到計算機中,就通俗易懂了!

Map是一種容器,其中的元素以key-value(鍵值對)的形式存儲,這個key-value鍵值對在Map接口中稱Entry<k,v>實體。

Map容器以key-value鍵值對形式存儲數據,一個鍵值對作為一個Entry存在,這種數據結構成為映射,一般而言,都是通過key-value去存儲或獲取value,可不能重複key已知;Map有多種實現,以哈希表(hashtable)作為底層數據結構實現。叫做HashMap,因此HashMap的實現原理即哈希表數據結構的實現原理。

Map常用方法

Map也是和List,Set一樣有增刪改查這幾個操作。

Map的增加操作方法有以下幾種。

put(key,value)和putAll()。

例子:

Map<String,String> map=new HashMap<String,String>();

使用put方法增加操作。

map.put("B", "banana");

map.put("A", "apple");

map.put("C", "casey");

System.out.println(map);

輸出結果為:{A=apple, B=banana, C=casey}。

觀察上面的代碼,基本操作都是和List,Set差不多的。只是存儲的結果不一樣而已。

下面來看一看刪除操作這幾個方法:clear和remove(key)。

map.remove("A");

最後的結果是刪除了A。列印顯示:{B=banana, C=casey}。

查詢是我們用的比較多一個,不管是什麼都會涉及到查詢操作,是驢是馬總得拉出來溜溜吧。

查詢是否有數據的方法比較多:get(key),containsKey,containsValue,isEmpty/size這幾個方法。

System.out.println(map.get("B"));

System.out.println(map.containsKey("B"));

結果為:banana。true。

Map是通過key-value鍵值對存儲map的。

Map本身是無序的,但我們可以通過簡單的數字,字母作為key,讓map有序。在開發過程中map有序使用情況較少。

HashMap

HashMap中的key底層數據結構是HashSet。

HashMap存儲結構是哈希表,key是無序的,查詢效率也是挺高的,添加、刪除效率也是很高。

HashMap 工作原理當向 HashMap 中通過 key 添加元素時,首先計算 key 的 hashcode,y=k(x)散列位置,如果該位置沒有元素,hashmap 執行添加操作;如果該位置有元素,和該鏈上的元素比較,如果相等,執行 hashmap 的更新操作,如果不相等,執行 hashmap 添加操作。

LinkedHashMap是Map的哈希表和連結列表實現,它繼承與HashMap、底層使用哈希表與雙向鍊表來保存所有元素。其基本操作與父類HashMap相似,它通過重寫父類相關的方法,來實現自己的連結列表特性。

01TreeMap

TreeMap是一個有序的key-value集合,通過紅黑樹實現。

TreeMap是key唯一性的。查詢、添加、刪除都屬於中等,一般!

實現參考TreeSet。

相關焦點

  • Map在Java 8中增加非常實用哪些函數接口?
    super V> action),作用是對Map中的每個映射執行action指定的操作,其中BiConsumer是一個函數接口,裡面有一個待實現方法void accept(T t, U u)。BinConsumer接口名字和accept()方法名字都不重要,請不要記憶他們。需求:假設有一個數字到對應英文單詞的Map,請輸出Map中的所有映射關係.
  • 計算機的並行接口
    因為個人計算機(PC機)佔有計算機市場的絕大部分份額,一般人能接觸到的和認知中的計算機基本就是IBM PC計算機及兼容機,這種計算機使用INTEL X86硬體平臺和MICROSOFT WINDOWS作業系統(早期為MS-DOS作業系統)的軟體平臺,並配有多種外部設備和輸入輸出接口,成為事實上的工業標準。
  • 告別計算機接口的擁擠
    毫無疑問,精簡型計算機的價格是以內置接口為代價的。就我個人而言,我使用的是華為matebook平板電腦,整個電腦的側面只有一個type-C充電埠和一個3.5mm耳機接口。只有這兩個接口。在實際應用中,type-C接口是不夠的,只能通過外部多功能集線器來擴展計算機接口。經過多個品牌的比較,選擇了ORICOtype-C多功能輪轂。
  • 計算機總線和接口類型
    並行通信速度快、實時性好,但由於佔用的口線多,不適於小型化產品;而串行通信速率雖低,但在數據通信吞吐量不是很大的微處理電路中則顯得更加簡易、方便、靈活。串行通信一般可分為異步模式和同步模式。----隨著微電子技術和計算機技術的發展,總線技術也在不斷地發展和完善,而使計算機總線技術種類繁多,各具特色。
  • JAVA map的用法/如何遍歷MAP
    在JAVA語言中,MAP是經常用到的,因為他的它的存儲數據的方式較其它集合比較特殊,它是以鍵值對方式存儲數據,在JAVA 語言中它存儲數據的方式特別像JAVA bean。下面介紹下它的使用方法。
  • 一文讀懂計算機的常見接口主要作用
    家用或辦公用的計算機一般都有很多接口,相信很多朋友對一些接口比較熟悉,如USB接口是最為常見的,也有一些外接顯示器的HDMI接口,可能你不了解它的名稱,但應該見過這樣或那樣的接口形態。當然,計算機有很多種接口,外形不一樣,功能不一。今天小編來給你全面講解關於計算機接口。
  • 計算機常見三種接口的原理
    在控制領域,想要對一個相對複雜的系統進行有效控制,要在設備之間建立一個相互聯絡和溝通的機制,計算機科學裡稱這種聯絡機制為「接口(Interface)」。譬如,當我們需要列印一份文件時,首先主機需要與印表機之間要建立聯繫,然後才能向印表機發送數據。那麼,這是怎樣一個過程呢?
  • Java中遍歷Map集合的五種方式
    作者:揚帆向海https://zhangxy.blog.csdn.net/article/details/113336560在java中所有的
  • 實例中學習python的walk/map/filter/lambda
    從尋找特定文件夾中尋找特定後綴名的文件列表是一個很常用的場景,可以擴展到將找到的(符合條件的)文件列表做重命名、刪除、備份等操作。我們本次就從此實例出發,去學習python語言中的walk/map/filter/lambda函數的使用。
  • Python中map函數的解釋和可視化
    Iteration是計算機科學的通用術語,它是指對一組元素執行一項操作,一次執行一個元素。譯者註:map()函數在python2中返回的是列表。Downey在他的《Think Python》書中提供的定義:映射操作(map):一種遍歷一個序列並對每個元素執行操作的處理模式。
  • 黑馬程式設計師Java教程:Java基礎教程之MAP集合
    1.1 概述現實生活中,我們常會看到這樣的一種集合:IP位址與主機名,身份證號與個人,系統用戶名與系統用戶對象等,這種一一對應的關係,就叫做映射。Java提供了專門的集合類用來存放這種對象關係的對象,即java.util.Map接口。
  • Python中的map函數
    軟硬體環境anaconda3 with python 3.7簡介map是python中的一個內置函數
  • USB接口有多萬能?計算機USB設備大全!
    USB接口作為目前計算機領域使用最廣泛的數據接口,已經有20多年的歷史了。正如它的名字一樣,USB(Universal Serial Bus通用串行總線)設計之初就是為了統一數據接口而生,你幾乎可以用它來替代計算機的各種外置數據接口,只需給它設計對應的驅動程序即可。
  • Java 8 Map,Filter和Collect示例
    map()函數是Stream類中的一個方法,它表示函數式編程概念。簡單來說,map()通過應用於函數將一個對象轉換為另一個對象。這就是Stream.map(函數映射器)將函數作為參數的原因。與map類似,過濾器也是一個中間操作,這意味著您可以在調用過濾器後調用其他Stream方法。filter()方法也是惰性的,這意味著在調用reduce方法之前不會對它進行求值,它會在到達目標時立即停止。如何在Java 8中使用Map和Filter你需要一個很好的例子來理解這些概念。
  • Python中map是什麼意思
    map函數的原型是map(function, iterable, …),它的返回結果是一個列表。
  • Java之Map集合的第二種遍歷方式,使用Entry對象遍歷
    Map.Entry<K,V>:在Map接口中有一個內部接口Entry,當Map集合創建,那麼這個接口就會在Map集合中創建一個Entry對象,用來記錄key和value(key和value是映射關係)。其實這個Entry對象就相當於學生證,裡面記錄了學生的學號還有姓名。
  • Golang中sync.Map的實現原理
    為了確保 dirty map 的元素能夠被快速地移動到 read map 中    // 它也包含了那些 read map 中未刪除(non-expunged)的項   //  expunged 掉的 entries 不會在 dirty map 中存儲。
  • Kubernetes中的Configmap和Secret
    Kubernetes中提供了Configmap來實現向容器中提供配置文件或環境變量來實現不同配置,從而實現了鏡像配置與鏡像本身解耦,使容器應用做到不依賴於環境配置。向容器傳遞參數DockerKubernetes描述ENTRYPOINTcommand容器中的可執行文件CMDargs需要傳遞給可執行文件的參數如果需要向容器傳遞參數,可以在Yaml文件中通過command和args或者環境變量的方式實現。
  • Golang中map的實現原理
    前言在Go語言中,一個map就是一個哈希表的引用。它是一個無序的key/value對的集合,其中,所有的key都是不同的。然後通過給定的key可以在常數時間複雜度內檢索、更新或刪除對應的value在map中的元素不是一個變量,因此不能對map的元素進行取址操作。
  • 一日一技:舉例說明python中的map()方法
    使用map()和字符串作為迭代器我們還可以在map()中傳入字符串參數。 在Python中,字符串的作用類似於數組,因此我們可以在map()中使用它。由於字典是迭代器,因此我們可以在map()函數中使用它。 現在讓我們使用字典作為map()函數中的迭代器。