java集合入門

2021-07-13 10:10:42 字數 4025 閱讀 8934

集合:也叫作容器類--->裝資料(物件)

動態儲存多個物件

動態:容器的大小隨著儲存的物件的數量而改變

物件:引用型別:8種基本資料--->包裝類型別

陣列:儲存相同資料型別的一組資料

1.泛型:

集合:add(object obj)--->子類型別

作用:保護集合中的資料的資料型別安全

2.遍歷集合

官配:迭代器

集合的第乙個元素--->最後乙個元素

iterator()--->iterator it

hashnext()--->boolean

next()--->元素  

增強for()迴圈

for(資料型別 變數名:需要遍歷的集合名稱)

list介面遍歷可以使用get(index)--->元素 類似陣列

本課內容

set 集合:

set集合的特點:無序,去重

object類的相等問題:

equals()-->比較物件的屬性 true false

實現類hashset :object類 hashcode()-->物件的雜湊碼

hashset:實現原理

step1:比較物件雜湊碼,如果物件的雜湊碼不同----不同的元素直接儲存進hashset集合

如果雜湊碼相同,通過雜湊碼無法判斷是否是重複的元素,進入第二步

step2:equals()

true:---->重複的元素  不儲存

false:---->不重複的元素 儲存

同時去重寫hashcode()和equals()

判斷兩個物件是否相同--->比較的規則

屬性值相同----》equals()--->oject類

this==obj ,子類重寫equals()

對於物件

step1;hashcode()--雜湊碼

每乙個物件都有自己的雜湊碼

雜湊碼如果不同---》肯定不是相同的元素

如果相同--->可能重複,也可能是不重複的

step2:equals()-->

屬性值:相同-->true 不同-->false

結論:要想使用hashset去重複的資料,必須重寫hashcode()和equals()方法

hashcode的儲存原理:1.物件的hashcodes是否相同,如果相同,直接儲存,如果相同計入2步:equals(),重寫equals方法,對物件的各個屬性進行比較

treeset:根據比較器:comparable用途:就是比較物件,對物件排序

comparable的唯一抽象方法

comparableto()---》int

正數:當前》被比較物件 存後邊

負數:當前物件小  存前面

0:重複資料

hashset:hashcode()與equals()

treeset:comparable介面的唯一抽象分方法comprableto()

map集合

概念:容器 --->對映

表示乙個對映,儲存一組數 key-->value

特點:鍵和值,是一一對應的。鍵是不能重複的,value是可以重複的最常用的方法put(key,value)

get(key)根據鍵值取值

remove(key)

containskey(「key」)

containsvlaue("value")

keyset()

size()

map中的key的去重複,原set中 的去重複原理

hashmap--->hashset

treemap---->treeset

結論:如果map中儲存的key,是自定義的類,要求是去重複的.

如果是hashmap,那麼要重寫該類的hashcode和equals

如果是treemap,那麼要讓key的類實現comparable比較器介面.

set.add(s1)

set.add(s2)

set.add(s3)

set.add(s4)

s2.compareto(s1)

-1s3.compareto(s1)

-1s3.compareto(s2)

1s4.compateto(s1)

1map.entry

key,value--->entry

阿sa,阿嬌--->twins

map--->

key,value

key,value

key,value

key,value

setkey,value-->entry

key,value-->entry

key,value-->entry

key,value-->entry

第一步:map--->看成set《組合》:entry

第二步:在set上獲取迭代器it-->iterator

第三步:迴圈迭代---->每乙個組合物件:entry

第四步:從組合中entry-->getkey(),getvalue()

map.entry:key和value的組合物件.

map-->set

迭代:獲取每乙個key

map(key)-->value

集合總結:

一、概念:也叫容器

動態儲存多個物件

二、集合的結構

a。collection-->每次操作乙個物件

add() clear() iterator()

子介面:list:有序 可重複 arraylist (陣列的底層結構訪問較快修改較慢)linkedlist (雙向鍊錶 修改較快訪問較慢可以模擬棧(push()pop())和佇列(poll() offer()))*vector(執行緒安全 但是效率低)

子介面:set:無序,去重複

實現類:

hashset:實現原理

step1:物件hashcode()---->int

step2:物件的equals()-->boolean

treeset:實現原理

比較器:comparable接  comparator 介面

compareto( o)--->int

this o

>0:this 大 o小 排後面

b.map-->每次操作2個物件(鍵值對)

put(),remove(),size() containskey() clear() keyset()

儲存鍵值對的對映 鍵必須去重複 鍵和值是對應的

hashmap 與hashset底層實現原理相同

treemap 與treeset底層實現原理相同

hashmap與hashtable區別:

hashmap是hashtable的代替類,hashtable是舊類已經不經常使用

hashtable中不能出現null,hashmap能出現null對於hashmap來說,null可以作為鍵值和值,直接作為物件使用,

hashmap父類是map 和hashtable父類是dictionary不一致

工具類:

collections類,方法都是靜態,

coolections.addall(容器,新增什麼元素(個數可以多個))//向容器中一次新增多個引數

sort(list)list儲存的物件實現了comparable或者comparator

binarysearch()

reverse(()

sychronizedlist/set/map

介面:collection

3.泛型

類、方法、屬性

類上的泛型在建立物件的時候確定型別

靜態方法使用泛型,必須在宣告方法的時候單獨宣告泛型,其型別在傳實參的時候確定。

集合上的泛型 :集合如list...

泛型的限定:

list<?>---->list?代表任意型別 相當於object

list<? extends e> 代表能接收的有e型別和e的子類

list<? super  e> 能夠接收的引數有e,e的父類,間接父類都可以

java集合入門

可重複,取出的順序與新增的順序一樣。arraylist 採用變長陣列實現,內部使用陣列儲存新增的元素,如果元素的個數超過陣列的長度,則自動擴容。linkedlist 內部採用雙向鍊錶實現。可以使用它模擬佇列 棧等資料結構。不可重複,無序 取出的順序與新增的順序不一樣 hashset 內部使用hash...

java集合入門問題

問題 既然有了陣列,為什麼還要arraylist?答 因為陣列大小本來不可變 如果要變化,則必須重新分配記憶體,太消耗資源。陣列只能同一種基本資料型別 或者同乙個類的物件 排除object arraylist中有重複元素嗎?因為 增加值的順序是1,3,4,5,1,那麼輸出的的值順序為 考慮重複值和值...

Java集合 Map集合

map map 用於儲存具有對映關係的資料,因此 map 集合裡儲存著兩組值,一組值用於儲存 map 裡的 key,另外一組用於儲存 map 裡的 value map 中的 key 和 value 都可以是任何引用型別的資料 map 中的 key 不允許重複,即同乙個 map 物件的任何兩個 key...