日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Map Set list 理解

發布時間:2025/7/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Map Set list 理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

對JAVA的集合的理解是想對于數組
??數組是大小固定的,并且同一個數組只能存放類型一樣的數據(基本類型/引用類型)?

??JAVA集合可以存儲和操作數目不固定的一組數據。???所有的JAVA集合都位于?java.util包中!
??JAVA集合只能存放引用類型的的數據,不能存放基本數據類型.??

?JAVA集合主要分為三種類型:

? ? ? ? Set(集)??

? ? ? ? List(列表)?

? ? ? ? Map(映射)??

??????? Collection?接口

根據對象的特性為對象生成一個唯一標識符的方法
Object中HashCode()是hash的一個應用:拿對象的內存地址經過運算作為對象的唯一標識符
底層還是數組+單向鏈表
?? ?我們把下標是字符串的數組叫關聯數組
?? ?數組的下標是一個字符串
無序可重復
Hash(哈希)
?? ?根據對象的特性為對象生成一個唯一標識符的方法
?? ?Object中HashCode()是hash的一個應用:拿對象的內存地址經過運算作為對象的唯一標識符
HashMap
?? ?底層還是數組+單向鏈表
?? ??? ?我們把下標是字符串的數組叫關聯數組
?? ??? ?數組的下標是一個字符串

?

?

Map集合
Map沒有繼承Collection接口。也就是說Map和Collection是2種不同的集合。Collection可以看作是(value)的集合,而Map可以看作是(key,value)的集合。
Map接口由Map的內容提供3種類型的集合視圖,一組key集合,一組value集合,或者一組key-value映射關系的集合

Map接口
public interface Map
{
//
public static interface Entry
{
????? public abstract Object getKey();
????? public abstract Object getValue();
????? public abstract Object setValue(Object obj);
????? //...
}
//作用基本等同Collection接口的方法
public abstract int size();
public abstract boolean isEmpty();
public abstract boolean containsKey(Object obj);
public abstract boolean containsValue(Object obj);
public abstract Object get(Object obj);
public abstract Object put(Object obj, Object obj1);
public abstract Object remove(Object obj);
public abstract void clear();



//添加map里包含的所有元素
public abstract void putAll(Map map);
//key集合
public abstract Set keySet();
//value集合
public abstract Collection values();
//key-value映射關系的集合Set<Entry>
public abstract Set entrySet();
//...
}

?

無序不可重復
?? ?HashMap:鍵的部分
SortedSet
?? ?紅黑樹
HashSet
?? ?HashTable
Set
?? ?無序不可重復
?? ??? ?HashMap:鍵的部分
?? ?HashSet
?? ??? ?HashTable
?? ?SortedSet
?? ??? ?紅黑樹

?

Set集合
Set繼承自Collection接口。Set是一種不能包含有重復元素的集合,即對于滿足e1.equals(e2)條件的e1與e2對象元素,不能同時存在于同一個Set集合里,換句話說,Set集合里任意兩個元素e1和e2都滿足e1.equals(e2)==false條件,Set最多有一個null元素。
因為Set的這個制約,在使用Set集合的時候,應該注意:
1,為Set集合里的元素的實現類實現一個有效的equals(Object)方法。
2,對Set的構造函數,傳入的Collection參數不能包含重復的元素。

Set接口里定義的方法與Collection基本一樣,這里不再重述。

?

?

有序可重復
ArrayList
?? ?底層是一個索引數組
?? ?有序:靠索引數組的下標
List
?? ?有序可重復
?? ?ArrayList
?? ??? ?底層是一個索引數組
?? ??? ?有序:靠索引數組的下標
?? ?LinkedList
?? ??? ?底層是一個鏈表

?? ??? 有序:靠鏈表的先后維持

?

List集合
List繼承自Collection接口。List是一種有序集合,List中的元素可以根據索引(順序號:元素在集合中處于的位置信息)進行取得/刪除/插入操作。
跟Set集合不同的是,List允許有重復元素。對于滿足e1.equals(e2)條件的e1與e2對象元素,可以同時存在于List集合中。當然,也有List的實現類不允許重復元素的存在。
同時,List還提供一個listIterator()方法,返回一個ListIterator接口對象,和Iterator接口相比,ListIterator添加元素的添加,刪除,和設定等方法,還能向前或向后遍歷。

List接口添加的主要方法有:
public interface List
extends Collection
{
//... other Collection methods

//根據索引取得元素
public abstract Object get(int i);
//在指定位置(索引)處插入新的元素
public abstract Object set(int i, Object obj);
//在List的尾部插入新的元素
public abstract void add(int i, Object obj);
//刪除指定位置(索引)處的元素
public abstract Object remove(int i);
//取得指定對象的最開始的索引位置
public abstract int indexOf(Object obj);
//取得指定對象的最后的索引位置
public abstract int lastIndexOf(Object obj);
//List提供的新的遍歷方法
public abstract ListIterator listIterator();
//從指定位置i處開始迭代。最初next()方法返回的將是位置i處的元素。
public abstract ListIterator listIterator(int i);
//取得從位置i到j的所有元素(包含i但不包含j位置的元素),返回一個新的集合對象。
public abstract List subList(int i, int j);
}


???

集合的遍歷:
所有java.util.Collection的實現類必須實現
public abstract Iterator iterator();
方法以支持對所包含的對象進行遍歷。

java.util.Iterator
+--java.util.ListIterator

Iterator接口:
public interface Iterator
{
//判斷是否存在下一個元素
public abstract boolean hasNext();
//返回下一個可用的元素
public abstract Object next();
//移除當前元素
public abstract void remove();
}



ListIterator接口:
public interface ListIterator
extends Iterator
{
//other methods defined in Iterator

//判斷是否存在上一個元素
public abstract boolean hasPrevious();
//返回上一個可用的元素
public abstract Object previous();
//取得下一個可用元素的索引位置
public abstract int nextIndex();
//取得上一個可用元素的索引位置
public abstract int previousIndex();
//替換當前位置的元素
public abstract void set(Object obj);
//在當前位置插入新元素
public abstract void add(Object obj);
}
接口類圖關系

?

轉載于:https://www.cnblogs.com/lianggnail/p/4685081.html

總結

以上是生活随笔為你收集整理的Map Set list 理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。