java中的Map介面以及實現類

2021-09-22 08:32:29 字數 3934 閱讀 4759

map介面:雙列資料,儲存key-value對的資料。

1.hashmap作為map的主要實現類,執行緒不安全的,效率高,可以儲存null的key和value。

hashmap底層:陣列和鍊錶(jdk7)陣列,鍊錶和紅黑樹(jdk8)

hashmap的內部類:node

static class nodeimplements map.entry
hashmap原始碼中的重要的常量:

default_initial_capacity:hashmap的預設容量,16

maximum_capacity:hashmap的最大支援量,0.75

default_load_factor:hashmap的預設載入因子

treeify_threshold:bucket中煉表長度大於該預設值,轉化為紅黑樹,8

untreeify_threhold:bucket中紅黑樹儲存的node小於該預設值,轉化為鍊錶

min_treeify_capacity:桶中的node被樹化時最小的hash表容量,64

table:儲存元素的陣列,總是2的n次冪

entryset:儲存具體元素的集

size:hashmap中儲存的鍵值對的數量

modcount:hashmap擴容和結構改變的次數

threshold:擴容的臨界值,等於容量加填充因子,12

loadfactor:填充因子

2.linkedhashmap:是hashmap的子類,保證在遍歷map元素時,可以按照新增的順序實現遍歷,對於頻繁的遍歷操作,它的執                                  行效率高於hashmap.

原因:在原有的hashmap底層結構的基礎上,新增了一對指標,指向前乙個和後乙個元素。

linkedhashmap中的內部類:entry

static class entryextends hashmap.node

}

3.treemap:保證按照新增的key-value對進行排序,實現排序遍歷,此時考慮key的自然排序或者定製排序。底層使用紅黑樹

向treemap中新增key-value對,要求key必須是由同乙個類建立的物件,因為是按照key進行排序的。

4.hashtable作為古老的實現類,執行緒安全,效率低,不可以儲存null的key和value。底層都使用雜湊表結構,查詢速度快。

5.properties:是hashtable的子類,常用來處理配置檔案。key和value都是string型別的。訪問資料時,建議使用setproperty(string key,string value)和getproperty(string key)

properties pros = new properties();

pros.load(new fileinputstream("jdbc.properties"));

string user = pros.getproperty("user");

system.out.println(user);

map中的key:是無序的,不可重複的,使用set儲存所有的key  --->key所在的類要重寫equals()和hashcode()(以hashmap為例)

map中的value:是無序的,  可重複的,使用collection儲存所有的value。 --->value

所在的類要重寫equals()

乙個鍵值對:key-value構成了乙個entry物件。

map中的entry:是無序的,不可重複的,使用set儲存所有的entry。

object put(object key,object value):將指定key-value新增到(或修改)當前map物件中

void putall(map m):將m中的所有key-value對存放到當前map中

object remove(object key):移除指定key的key-value對,並返回value

void clear():清空當前map中的所有資料

map map = new linkedhashmap();

map.put(123,"aa");

map.put("12","bb");

map.put(3,"cc");

map.put(6,4);

system.out.println(map);

map map1 = new linkedhashmap();

map1.put(8,"cc");

map1.put(9,0);

map.putall(map1);

system.out.println(map);

object value = map.remove("cc");

system.out.println(map);

system.out.println(value);

map1.clear();

system.out.println(map1.size());

object get(object key):獲取當前集合的元素

boolean containskey(object key):是否包含指定的key

boolean containsvalue(object value):是否包含指定的value

int size():返回map中key-value對的個數

boolean isempty():判斷當前map是否為空

boolean equals(object obj):判斷當前map和引數物件obj是否相等

map map2 = new hashmap();

map2.put(123,"aa");

map2.put("12","bb");

map2.put(3,"cc");

map2.put(6,4);

object obj = map2.get(6);

system.out.println(obj);

boolean i***ist = map2.containskey("12");

system.out.println(i***ist);

system.out.println( map2.containsvalue(4));

boolean bool = map2.equals(map);

system.out.println(bool);

set keyset():返回所有key構成的set集合

collection values():返回所有value構成的collection集合

set entryset():返回所有key-value對構成的set集合

map map3 = new hashmap();

map3.put(123,"aa");

map3.put("12","bb");

map3.put(3,"cc");

map3.put(6,4);

//遍歷key值:keyset()

set set = map.keyset();

iterator iterator = set.iterator();

while (iterator.hasnext())

//遍歷所有的value

collection val = map3.values();

for (object ob : val)

//遍歷鍵值對

set se = map3.entryset();

iterator iterator1 = set.iterator();

while (iterator1.hasnext())

java中的Map以及常用子類

map 主要用於儲存健值對,根據鍵得到值,因此不允許鍵重複 重複了覆蓋了 但允許值重複。hashmap 根據鍵的 hashcode 值儲存資料 根據鍵可以直接獲取它的值,具有很快的訪問速度,遍歷時,取得資料的順序是完全隨機的。hashmap 最多隻允許一條記錄的鍵為 null 允許多條記錄的值為 n...

Java中Map介面的使用

map介面也是乙個非常重要的集合介面,用於儲存鍵 值對。map中的元素都是成對出現的,鍵值對就像陣列的索引與陣列的內容的關係一樣,將乙個鍵對映到乙個值的物件。乙個對映不能包含重複的鍵 每個鍵最多只能對映到乙個值。key value value可以儲存任意型別的物件,我們可以根據key鍵快速查詢val...

5 10 java中的介面以及實現類

定義介面 介面特點 1.沒有構造方法 不能定義構造器 不能new 2.介面只能繼承介面,不能繼承類,支援多繼承 3.介面中的方法預設使用public abstract修飾 4.介面中的字段預設使用public static final 5.介面中的類是公共靜態的 public static 類和類之...