Java常見集合類的概念和用法

2021-09-24 17:17:30 字數 2905 閱讀 1152

1.map集合類和collection集合類的區別:

collection中的集合,元素是孤立存在的(理解為單身),向集合中儲存元素採用乙個個元素的方式儲存;

map中的集合,元素是成對存在的(理解為夫妻)。每個元素由鍵與值兩部分組成,通過鍵可以找對所對應的值;

collection中的集合稱為單列集合,map中的集合稱為雙列集合;

2.常見的實現類

collection:

-----list

-----linkedlist 非同步

----arraylist 非同步,實現了可變大小的元素陣列

----vector 同步

------stack

-----set 不允許有相同的元素

map:

-----hashtable 同步,實現乙個key–value對映的雜湊表

-----hashmap 非同步,

-----weakhashmap 改進的hashmap,實現了「弱引用」,如果乙個key不被引用,則被gc**

3.map集合類常見方法

get方法:獲取指定鍵(key)所對應的值(value);

put方法:將指定的鍵與值對應起來,並新增到集合中,方法返回值為鍵所對應的值;

remove方法:根據指定的鍵(key)刪除元素,返回被刪除元素的值(value);

map map = new hashmap();

map.put("a", 100);

map.put("b", 90);

map.put("c", 110);

system.out.println(map);

//d 不存在,不會改變

map.replace("d", 80);

system.out.println(map);

//重新計算a

map.merge("a", 20, (oldval, newval) -> (integer)oldval + (integer) newval);

system.out.println(map);

//遍歷

map.foreach((key, value) -> system.out.println("key : " + key + " , value:" + value));

//d 不存在,不存在時計算

map.computeifabsent("d", (key) -> ((string) key).length());

system.out.println(map);

//d存在了, 存在計算

map.computeifpresent("d", (key, value) -> ((string) key).length() * 10);

system.out.println(map);

//output

key : a , value:120

key : b , value:90

key : c , value:110

4.collections集合類常見方法:

add方法:直接add元素

get方法:通過index獲取元素

remove方法:通過index或者value來移除

listperson=new arraylist<>();

person.add("jackie"); //索引為0 //.add(e)

person.add("peter"); //索引為1

person.add("annie"); //索引為2

person.add("martin"); //索引為3

person.add("marry"); //索引為4

person.remove(3); //.remove(index)

person.remove("marry"); //.remove(object o)

string per="";

per=person.get(1);

system.out.println(per); .get(index)

for (int i = 0; i < person.size(); i++)

5.幾個注意的點:

5.1hashmap和hashtable是map介面的實現類。

hashtable 和 hashmap區別:

hashtable 是執行緒安全的, hashmap是執行緒不安全的。

hashtable 使用 null作為key和value, hashmap可以使用null作為key或value。 由於key不能重複, 最多只能有乙個key為null。

hashtable 比較古老,效能較差, 不推薦使用,

5.2為了執行緒安全,可以使用 collections 工具類。

擴充套件:什麼是執行緒安全?

執行緒安全就是多執行緒訪問時,採用了加鎖機制,當乙個執行緒訪問該類的某個資料時,進行保護,其他執行緒不能進行訪問直到該執行緒讀取完,其他執行緒才可使用。不會出現資料不一致或者資料汙染。

執行緒不安全就是不提供資料訪問保護,有可能出現多個執行緒先後更改資料造成所得到的資料是髒資料

arraylist是非執行緒安全的,vector是執行緒安全的;hashmap是非執行緒安全的,hashtable是執行緒安全的;stringbuilder是非執行緒安全的,stringbuffer是執行緒安全的。

5.3map中的集合不能包含重複的鍵,值可以重複;每個鍵只能對應乙個值;

map中常用的集合為hashmap集合、linkedhashmap集合;

java常見集合類區別

hashmap 執行緒不安全,key可以為null,不可多執行緒,效率高 hashtable 執行緒安全,key不可以為null,內部的方法基本都經過 synchronized 修飾,效率低下 concurrenthashmap 在hashtable的基礎上進行分割,鎖住分割的一部分而不是整個map...

java 類和物件的概念

一.類和物件的概念 類是對客觀事物的抽象,而物件是類的例項。二.類中有什麼 類中包含屬性和方法。1.屬性的定義 訪問修飾符 資料型別 屬性名 a.訪問修飾符包括 private 私有的 public 公共的 b.資料型別 數值型 包括整數型和浮點型 字元型,布林型 2.方法的定義 訪問修飾符 返回值...

Java中集合list ,set,map用法和區別

為什麼使用集合框架,而很少陣列作為儲存結構 1 陣列長度,不能動態擴容,集合框架無需宣告儲存大小,可以動態擴容 2 陣列儲存型別單一,集合框架可以儲存任何型別,加上泛型,可以避免強制轉換 3 陣列操作方法少,集合框架操作元素方法多,便於管理 常見的集合有 list集合 arraylist和linke...