計算機中的Map接口

2020-12-21 老楊分享

上集說到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。

相關焦點

  • Java之Map接口的常用方法
    各位小夥伴們大家好,在之前的文章中,小編對Map集合進行了簡單的概述Java之Map集合的簡單介紹,這次小編要講的是Map接口的常用方法。方法一:public v put(K key,V value):把指定的key與指定的value添加到Map集合中。
  • 告別計算機接口的擁擠
    毫無疑問,精簡型計算機的價格是以內置接口為代價的。就我個人而言,我使用的是華為matebook平板電腦,整個電腦的側面只有一個type-C充電埠和一個3.5mm耳機接口。只有這兩個接口。在實際應用中,type-C接口是不夠的,只能通過外部多功能集線器來擴展計算機接口。經過多個品牌的比較,選擇了ORICOtype-C多功能輪轂。
  • 一文讀懂計算機的常見接口主要作用
    家用或辦公用的計算機一般都有很多接口,相信很多朋友對一些接口比較熟悉,如USB接口是最為常見的,也有一些外接顯示器的HDMI接口,可能你不了解它的名稱,但應該見過這樣或那樣的接口形態。當然,計算機有很多種接口,外形不一樣,功能不一。今天小編來給你全面講解關於計算機接口。
  • JAVA map的用法/如何遍歷MAP
    在JAVA語言中,MAP是經常用到的,因為他的它的存儲數據的方式較其它集合比較特殊,它是以鍵值對方式存儲數據,在JAVA 語言中它存儲數據的方式特別像JAVA bean。下面介紹下它的使用方法。
  • 計算機圖形學:紋理映射(Texture Mapping)及Mipmap技術
    紋理映射及Mipmap技術在本篇文章中,我們會具體的討論如何利用紋理映射讓場景擁有豐富的顏色信息,以及紋理貼圖精度大小所帶來的問題
  • 黑馬程式設計師Java教程:Java基礎教程之MAP集合
    1.1 概述現實生活中,我們常會看到這樣的一種集合:IP位址與主機名,身份證號與個人,系統用戶名與系統用戶對象等,這種一一對應的關係,就叫做映射。Java提供了專門的集合類用來存放這種對象關係的對象,即java.util.Map接口。
  • 一日一技:舉例說明python中的map()方法
    使用map()和字符串作為迭代器我們還可以在map()中傳入字符串參數。 在Python中,字符串的作用類似於數組,因此我們可以在map()中使用它。由於字典是迭代器,因此我們可以在map()函數中使用它。 現在讓我們使用字典作為map()函數中的迭代器。
  • Java8中Map新增computeIfAbsent方法詳解
    ,我把0~9個數字進行歸類,取模運算後,結果相同的數字放一起,一般的寫法像這樣如果用computeIfAbsent,可以這麼寫@Testpublic void test() {Map<Integer, List<Integer>> map
  • 計算機網絡
    簡單點來說:多個能運行的計算機通過物理線路(網線,wifi)連接起來就形成了計算機網絡。計算機網絡PC可以方便共享資源、交換數據隨著時間的發展,計算機更多趨向於共享硬體(CPU)形成更強大的計算能力,俗稱集群。
  • Java集合List和Map面試題以及答案
    大家都知道,HashMap是我們非常常用的數據結構,它是由數組和鍊表組合構成的數據結構的,而在JDK1.8中引入了紅黑樹。接下直接進入正文吧!前言首先介紹Set、List以及Map接口。List接口是繼承collection父接口的,它是按照對象的進入順序進行保存的,因此,它可以能對列表中的每個元素進行存入和刪除的位置,能夠精確地控制。list保存的數據是可以重複的,list的子類有LinkedList、Vrctor和ArrayList集合。
  • 一文弄懂apply、map和applymap三種函數的區別
    CDA數據分析師 出品在日常處理數據的過程中,會經常遇到這樣的情況,對一個DataFrame進行逐行、逐列或者逐元素的操作,很多小夥伴也知道需要用到apply、map或者applymap,但是具體什麼情況下運用哪種方法或者說對這些方法了解不夠,用起來暈暈乎乎始終沒有很明白
  • 計算機有容乃大
    Collection接口Collection 接口是集合框架的頂層接口,Collection 表示集合,其中的對象稱為集合的元素。元素可以有序、也可以無序;元素還可以重複、也可不重複。Collection 只能存儲引用數據類型,不能存儲基本數據類型。
  • 電腦USB接口被禁用怎麼辦 啟用USB接口方法
    電腦USB接口怎麼啟用呢?電腦USB接口被禁用怎麼辦呢?如果電腦USB接口被禁用,將直接導致U盤或印表機等USB設備無法正常工作。對此可以通過以下方法實現啟用USB接口操作。當U盤或USB印表機插入電腦無反應時,我們首先需要檢查電腦USB接口是否被禁用。
  • Java之Map集合的遍歷
    Map集合中第一種遍歷方式,通過key找到value,實現步驟:1.使用Map集合中的方法KeySet(),把Map中所有的Key取出來,存儲到一個set集合中。2.遍歷set集合,獲取map集合中的每一個key。3.通過Map集合中的方法get(key),通過key找到value。
  • 「固態科普」M.2接口、SATA接口有啥區別?
    主要摘要:「固態科普」M.2接口、SATA接口有啥區別?如果機械硬碟是計算機中的主要硬碟,它明顯地剝離了計算機的後腿,降低了計算機的啟動速度。固態硬碟的加載和讀取速度比硬碟快價格是機械硬碟的幾倍。這是當很多人安裝系統時,在升級計算機硬碟時,他們會優先升級SSD/作為系統盤,以提高引導速度。從接口到協議,M.2 NVMe接口協議在讀寫速度有更好的體驗,毫無疑問帶有m.2接口的固態硬碟會更好。如果預算有限,並且對讀寫速度沒有過多的要求,慢也就慢一點,無所謂,而且SATA和m.2sata的接口也能夠滿足個人儲存需要。
  • 計算機基礎知識|計算機的特點、用途和分類
    3)過程控制過程控制是指利用計算機對生產過程、製造過程或運行過程進行檢測與控制,即通過實時監控目標物體的狀態,及時調整被控對象,使被控對象能夠正確地完成目標物體的生產、製造或運行.過程控制廣泛應用於各種工業環境中。第一,能夠替代人在危險、有害的環境中作業。
  • 主板USB接口都無法使用故障
    主板USB接口都無法使用故障故障現象一臺計算機,出現了USB接口都無法使用的故障現象。故障判斷當計算機出現某一個USB接口不能使用時,大部分情況是由於該USB接口存在開焊、虛焊、或本身損壞,以及USB接口的供電部分出現問題而導致不能正常使用的故障。但當一臺計算機的USB接口全部不能使用時、則多半是由於南橋晶片存在虛焊、性能不良,或USB接口控制功能模塊的供電、時鐘信號出現問題而導致的。
  • magic-api 0.5.4 發布,接口快速開發框架
    修復編輯器的代碼提示不完整的問題 修復swagger在帶有context-path時Execute會404的問題 修復assert失敗時,未被轉換為json結果的BUG 修復接口信息中點擊新增/刪除Header或參數時,組件不刷新的問題 修復運行結果的組件可能不刷新的問題 修復複製接口時會產生覆蓋的問題 修復腳本部分作用域未隔離的BUG 優化Map的sort擴展方法,增加value參數以支持根據map
  • python高階函數:map、filter、reduce的替代品
    高階函數是一種將函數作為參數,或者把函數作為結果返回的函數,map函數、sorted函數就是高階函數的典型例子。map函數在小編以前的文章中做過相應的知識分享。sorted函數是python的內置函數,它的可選參數key用於提供一個函數,它可以將函數應用到各個元素上進行排序。
  • 計算機語言java中得List
    不管是生活中還是在學習中、工作中基本都能聽到「集合」這個小朋友。其實在計算機世界中也會有集合這個概念,而且這個概念還挺流行的。List接口存儲的數據必須有序的,不唯一(可重複)。啥叫有序和無序呢?唯一與不唯一又有啥區別呢?所謂的有序就是List下標是有序的,感覺說和沒說沒啥區別!