1. 程式人生 > >《集合詳解之map》

《集合詳解之map》

Map介面集合類,具備的特點,儲存的資料結構都是以鍵值對的形式存在的,鍵不可重複,值可以重複。

新增

put() 如果之前沒有存在該鍵,那麼就返回的是null,如果之前就已經存在該鍵了,那麼就返回該鍵之前對應的值

Putall() 把一個集合新增到另外一個集合中去

刪除

Remove() 根據鍵刪除一條map中資料,返回的是該鍵對應的值

Clear() 清空集合中的所有元素

獲取

Get() 根據指定的鍵獲取對應的值

Size() 獲取map集合中的鍵值對的個數

判斷

Containskey() 判斷map集合是否包含指定的鍵

Containvalue() 判斷map集合中是否包含指定的值

Isempty() 判斷map

集中是否為空

Hashmap底層也是基於雜湊表實現的

Hashmap儲存原理:

hashmap新增元素的的時候,首先會呼叫鍵的hashcode方法得到元素的雜湊碼值,然後經過運算可以算出該元素在雜湊表中儲存位置。分兩種情況。

情況1.

如果算出的位置目前沒有任何元素,那麼該元素可以直接新增到雜湊表中。

情況2.

如果算出的位置目前已經存在其他的元素,那麼還會呼叫該元素的equals方法與這個位置上的元素進行比較,如果equals方法返回的是false,那麼該元素允許被儲存,如果equsls返回是true,那麼該元素被視為重複元素,不允許儲存。

Treemaptreemap也是基於紅黑樹(二叉樹)資料結構實現的,特點就是會對元素的鍵進行排序儲存。

Treemap要注意的事項:

1. treemap新增元素的時候,如果元素的鍵具備自然順序,那麼就會按照鍵的自然順序特性進行排序儲存。

2. treemap新增元素的時候,如果元素鍵不具備自然順序,那麼元素的鍵類必須要實現comparable介面,把鍵的比較規則定義在compareto方法上。

3. treemap新增元素的時候,如果元素的鍵不具備自然順序特性,而且鍵所屬的類也沒有實現comparble介面,那麼就必須在建立treemap物件的時候傳入比較器。

Hashtable底層也是依賴雜湊表實現的,也就是實現方式與hashmap是一致的,但是hashtable是執行緒安全的,操作效率低。

Jdk1.0出現的,hashmapjdk1.2出現的

相關推薦

集合map

Map介面集合類,具備的特點,儲存的資料結構都是以鍵值對的形式存在的,鍵不可重複,值可以重複。新增put() 如果之前沒有存在該鍵,那麼就返回的是null,如果之前就已經存在該鍵了,那麼就返回該鍵之前對應的值Putall() 把一個集合新增到另外一個集合中去刪除Remove(

Java 進階——集合體系Map體系鍵值對集合

引言 一Map體系的訪問方式 Map的訪問也和HashSet的特點一樣是無需的,Map體系與Set體系不同並不實現Iterator介面,當然也不會具有迭代器,那麼Map集合怎麼訪問呢?間接通過Set的迭代器,Map集合訪問方式主要有兩種:keySet和e

集合HashMap

       HashMap 和 HashSet 是 Java Collection Framework 的兩個重要成員,其中 HashMap 是 Map 介面的常用實現類,HashSet 是 Set 介面的常用實現類。雖然 HashMap 和 HashSet

集合set》

Hashset無序:是新增元素的順序與元素出來的順序是不一致的。Hashset實現原理:往hashset新增元素的時候,hashset會先呼叫的hashcode方法得到元素的雜湊值,然後通過元素的雜湊值經過移位等運算,就可以算出該元素在雜湊表中的儲存位置。如果算出儲存位置分兩

集合list》

集合集合:集合是儲存物件資料的集合容器集合比陣列的優勢:1. 集合可以儲存任意型別的物件資料,陣列只能儲存同一種資料型別的資料2. 集合的長度是會發生變化的,陣列的長度是固定的Collection單例集合的根介面List:如果是實現了list介面的集合類,具備的特點:有序,可

Java集合框架繼承map介面

趁著最近比較閒,靜下心來準備把關於集合框架的東西好好整理一下,邊學邊整理。近階段先是整理整體的知識點,一些介面,一些繼承類以及它們的特性,用法,後續還會有一些常用的,比較重要的類的jdk原始碼剖析。 map介面: Map 提供 Key 到 Value

Map集合,Keyset檢視,Collection 檢視分析

Map集合詳解,Keyset檢視,Collection 檢視分析 map<k,v> k此對映 鍵的型別 v 對映值的型別。 特性:將鍵對映到值的物件。一個對映不能包含重複的鍵;每個鍵最多隻能對映到一個值。 常用方法: clear() : 從此對映中

Java進階—— 集合體系List體系有序集合

引言 面嚮物件語言對事物的體現必然是以物件的形式,Java工程師為了方便多多個物件的操作,就對物件進行儲存,集合就是儲存物件的一種方式,他們的底層都是基於不同的資料結構。當然集合和陣列一樣都是容器,陣列也是可以儲存物件的,但是陣列長度一經初始化長度就是固定的,

Java集合--什麼是Map

引言 在很久很久以前,講過Set的實現原理,講到Set就是Map的馬甲,那麼今天我們就來看看Map是如何實現的(本文都基於JDK1.8的版本) 什麼是Map Map和Collection有關的幾個map的關係圖 Map的定義

Redis內部資料結構整數集合(intset)

整數集合簡介 整數集合intset用於有序、無重複地儲存多個整數值,根據集合中元素的值自動選擇使用整數型別來儲存元素,例如:如果intset中絕對值最大的整數可以用int32_t來儲存,那麼整個

map、set和list集合

集合是用來代替陣列完成陣列做不到的工作的,用過陣列的都知道,陣列有著很明顯的短板,資料型別的限制,定長的不靈活性等,因此幾乎被集合完全取代。 通俗的說,集合就是一個放資料的容器,準確的說是放資料物件引用的容器。它比陣列功能要強大的多,靈活性也更高。但我們要注意:

Java中的Map集合

一、概述  java中的map集合使用鍵(key)值(value)來儲存資料,其中值(value)可以重複,但鍵(key)必須是唯一,也可以為空,但最多隻能有一個key為空,它的主要實現類有HashM

集合】Java集合總結(中)-Map家族

接上文,本篇部落格我們接著談論有關集合的內容。 java所有的集合分成三大類。Set類似罐子,把一個物件新增到Set集合時,Set集合無法記住新增這個元素的順序,所以Set裡的元素不能重複。List集合非常想一個數組,可以記住每次新增元素的順序,且List的長

解決ajax跨域的方法原理Cors方法

詳細 不同 htm 渲染 jsonp del 需要 methods href 1、神馬是跨域(Cross Domain) 對於端口和協議的不同,只能通過後臺來解決。 一句話:同一個ip、同一個網絡協議、同一個端口,三者都滿足就是同一個域,否則就是 跨域問題了。而為

javascript設計模式命令模式

這一 clas 例子 別了 logs 操作 book 技術 概念   每種設計模式的出現都是為了彌補語言在某方面的不足,解決特定環境下的問題。思想是相通的。只不過不同的設計語言有其特定的實現。對javascript這種動態語言來說,弱類型的特性,與生俱來的多態性,導致某些設

MVCAjax.BeginForm使用更新列表

分布 use html text col 返回 uno pts scripts 1.首先,請在配置文件設置如下:(該項默認都存在且為true) <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 2

hibernate 表關系映射繼承關系

子類 用戶 .cn cnblogs -1 擁有 nat src 實體類 舉例:亞馬遜的網上商城可以賣很多東西,比如說圖書,電器,水果等等,那麽我們以面向對象的理念去抽象一個商品類,他具有商品的共有屬性,比如說上架時間,當前 價格,優惠價格等待,商品可以繼承商

OSPF三:OSPF LSA

ospf lsa詳解 forwarding address OSPF LSA詳解OSPF V2版本中常用的主要有6類LSA,分別是Router-LSA、Network-LSA、Network-summary-LSA、ASBR-summary-LSA、AS-External-LSA、NSSA-LSA,接

09_02_磁盤及文件系統管理

09_02_磁盤及文件系統管理詳解之五分區 —> 創建文件系統(格式化)文件系統管理重新創建文件系統會損壞原有文件fdisk /dev/sda在裏面刪不掉,按ctrl+Backspace即可partprobe /dev/sda 只探測這一個mkfs: make file system -t FS

mysql數據庫 自學成才1

簡化 註意 可能 方法 after 字符型 專題 mar 建議 一、學習目錄 1.認識數據庫和mysql 2.mysql連接 3.入門語句 4.詳解列類型 5.增刪改查 INSERT INTO 表名(列1,…… 列n) VALUES(值 1,…… 值 n); *(列