Java基礎16 集合Map

2021-06-05 19:07:35 字數 4792 閱讀 8634

<--

1.對於重複元素的處理:

set: 當出現重複元素,丟棄

map: 當出現重複元素,存入,將原資料進行覆蓋

2.map.entry就是乙個鍵值對,是map集合的組成關係!

3.properties:主要用於操作配置檔案.

-->

一.map集合

1.什麼是map集合

map集合可以儲存鍵值對, 在儲存的時候存乙個鍵物件和乙個值物件.

集合中的鍵是唯一的, 可以根據鍵獲取值.

2.map集合常用方法

新增記錄: put(k key, v value)

刪除記錄: remove(object key)

根據鍵獲取值: get(object key)

獲取長度: size()

判斷是否包含某個鍵: containskey(object o)

判斷是否包含某個值: containsvalue(object o)

獲取所有鍵組成的集合: keyset()

獲取所有鍵值對組成的集合: entryset()

3.迭代方式

a.keyset:

system.out.println("使用keyset()進行遍歷: ");

mapmap = new hashmap();

map.put(new person("楊冪",20), 80);

map.put(new person("劉亦菲",22), 84);

map.put(new person("張娜拉",24), 89);

setkeyset = map.keyset();

for(iteratorit = keyset.iterator(); it.hasnext(); )

b.entryset:

system.out.println("使用entryset()進行遍歷: ");

mapmap = new hashmap();

map.put(new person("楊冪",20), 80);

map.put(new person("劉亦菲",22), 84);

map.put(new person("張娜拉",24), 89);

set> entryset = map.entryset();

for(iterator> it = entryset.iterator(); it.hasnext(); )

4.hashmap

在儲存鍵值對的時候, 使用雜湊演算法對鍵物件去重複, 效率高, 沒有順序.

當儲存乙個鍵值對的時候, 先呼叫鍵物件的hashcode()方法計算乙個雜湊值, 在集合中查詢是否有雜湊值相同鍵物件.

如果沒有雜湊值相同的鍵物件, 直接將鍵值對存入.

如果有雜湊值相同鍵物件, 則和雜湊值相同的鍵物件進行equals()比較.

比較結果為false就存入鍵值對.

比較結果為true則用新的值覆蓋舊的值.

5.treemap

在儲存鍵值對的時候, 通過指定的比較演算法, 對鍵物件進行排序, 以二叉樹形式進行儲存.

建立treemap時如果沒有傳入比較器, 則會按照鍵物件的自然順序來排序. 自然順序就是實現了comparable介面之後compareto方法中定義的順序.

如果我們不希望使用自然順序排序, 還在treemap的建構函式中可以傳入乙個比較器. 比較器就是實現了comparator介面的物件, 按照其中compare方法排序.

6.linkedhashmap

hashmap的子類, 實現原理和hashmap相同, 但是可以保留儲存順序.

7.hashtable

hashtable和hashmap原理相同, 都是基於雜湊演算法的, hashtable是執行緒安全的, 而且hashtable不允許儲存空的鍵和空的值.

8.properties

hashtable的子類, 通常用來操作配置檔案.

使用setproperty(string, string)方法來設定乙個配置項

使用getproperty(string)來獲取乙個配置項的值

使用propertynames()方法獲取所有key物件的enumeration

使用load(inputstream)來載入資料

使用list(printstream)來寫出資料

三.知識

1.集合分類

collection: 單列集合, 每次存乙個物件

list: 可重複, 有儲存順序, 可以根據索引控制

* arraylist: 陣列實現, 查詢快

* linkedlist: 鍊錶實現, 增刪快

vector: 和arraylist原理相同, 執行緒安全, 效率低

set: 不可重複

* hashset: 使用雜湊演算法去重複, 效率高

linkedhashset: hashset的子類, 去重複並且保留儲存順序

* treeset: 可以用指定的比較方法進行排序

map: 鍵值對, 每次存乙個鍵值對

* hashmap: 使用雜湊演算法對鍵去重複, 效率高

linkedhashmap: hashmap的子類, 去重複並且保留儲存順序

hashtable: 演算法和hashmap相同, 不允許null鍵和null值, 執行緒安全, 效率低

properties: hashtable的子類, 通常用來操作.properties配置檔案

* treemap: 可以用指定的比較方法對鍵進行排序

2.集合迭代

collection:

2種通用的方式:

使用iterator()方法獲取iterator, 使用hasnext()和next()方法進行迭代

使用增強for迴圈, 其內部也是使用的iterator

list可以使用普通for迴圈, 呼叫get(int)方法根據指定索引獲取

vector可以使用enumeration進行迭代

map:

通過keyset()方法得到所有key物件組成的set, 迭代set得到每乙個key, 然後再通過key獲取value

通過entryset()方法得到所有entry物件組成的set, 迭代set得到每乙個entry, 然後再呼叫getkey()和getvalue()

四.常用工具類

1.arrays: 對陣列操作

listaslist(t... a)          將陣列或者若干相同型別的物件轉為乙個list

int binarysearch(int a, int key)       二分法查詢, 在乙個有序且不重複的陣列中查詢某個元素的位置

int copyofrange(int original, int from, int to)  將指定陣列中的一部分拷貝到乙個新的陣列中

boolean equals(int a, int a2)       比較兩個陣列中元素是否完全相同

void fill(int a, int val)        用指定值替換陣列中所有元素

void sort(int a)           對指定陣列進行排序

string tostring(int a)         將陣列轉為字串表達形式

2.collections: 對集合操作

boolean addall(collection<? super t> c, t... elements) 將多個同型別的元素一次性新增到collection中

int binarysearch(listlist, t key)      在list中查詢指定元素出現的位置

void copy(list<? super t> dest, list<? extends t> src) 用src中的元素替換dest中的元素

boolean disjoint(collection<?> c1, collection<?> c2)  判斷是否沒有相同元素

void fill(list<? super t> list, t obj)     用指定元素替換集合中所有元素

int frequency(collection<?> c, object o)    統計指定元素在集合中出現的次數

t max(collection<? extends t> coll)      找到集合中最大的元素

t min(collection<? extends t> coll)      找到集合中最小的元素

boolean replaceall(listlist, t oldval, t newval) 用乙個指定元素替換list中另乙個指定元素

void reverse(list<?> list)         反轉集合中所有元素

void sort(listlist)         對list進行排序

void swap(list<?> list, int i, int j)      交換集合中的兩個元素

enumerationenumeration(collectionc)    從collection中獲取enumeration

arraylistlist(enumeratione)      通過enumeration得到arraylist

Python基礎 16 集合

集合概述 集合是一組無序不重複的元素集合,可以使用大括號 和set 函式建立集合 注 建立乙個空集合必須用set 而不是 因為 是用來建立乙個空字典的 集合特點 集合是無序的 集合與列表 元組類似,可以儲存多個資料,但是這些資料是不重複的。set可以快速的完成對list中的元素去重複的功能 num ...

java基礎 7 集合

基礎 物件導向 語法 異常 常用api 資料型別 io 集合 多執行緒 高併發 1 arraylist 底層資料結構是陣列,查詢快,增刪慢,執行緒不安全,效率高,可以儲存重複元素 2 linkedlist 底層資料結構是鍊錶,查詢慢,增刪快,執行緒不安全,效率高,可以儲存重複元素 3 vector ...

Java基礎14 集合List

注意 1.list集合 arraylist,linkedlist,vector 是根據 equals 方法進行元素的相等判斷的,由於list集合是可以重複的,那麼在使用remove,contains等方法時,就是根據equals來的.2.只有實現了iterable介面的類,才可以進行for each...