中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redis中set和list的區別有哪些

發布時間:2020-09-15 10:34:47 來源:億速云 閱讀:269 作者:小新 欄目:關系型數據庫

這篇文章給大家分享的是有關redis中set和list的區別是什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

list和set的區別:

1、List和Set都是接口繼承于Collection接口。

2、最大的不同就是List是可以重復的。而Set是不能重復的。(注意:元素雖然無放入順序,但是元素在set 中的位置是有該元素的3、HashCode決定的,其位置其實是固定的)

3、List接口有三個實現類:LinkedList,ArrayList,Vector ,Set接口有兩個實現類:HashSet(底層由HashMap實現),LinkedHashSet

4、List適合經常追加數據,插入,刪除數據。但隨機取數效率比較低。

5、Set適合經常地隨機儲存,插入,刪除。但是在遍歷時效率比較低。

Set對每個對象只接受一次,并使用自己內部的排序方法(通常,你只關心某個元素是否屬于Set,而不關心它的順序--否則應該使用List)。Map同樣對每個元素保存一份,但這是基于"鍵"的,Map也有內置的排序,因而不關心元素添加的順序。如果添加元素的順序對你很重要,應該使用 LinkedHashSet或者LinkedHashMap.

總結:List有順序有重復沒有排序,set無重復有排序,map的key也和set一樣。如果想跟List一樣需要有插入元素的順序,請使用LinkedHashSet或者LinkedHashMap。

List的功能方法

實際上有兩種List: 一種是基本的ArrayList,其優點在于隨機訪問元素,另一種是更強大的LinkedList,它并不是為快速隨機訪問設計的,而是具有一套更通用的方法。

List : 次序是List最重要的特點:它保證維護元素特定的順序。List為Collection添加了許多方法,使得能夠向List中間插入與移除元素(這只推薦LinkedList使用。)一個List可以生成ListIterator,使用它可以從兩個方向遍歷List,也可以從List中間插入和移除元素。

ArrayList : 由數組實現的List。允許對元素進行快速隨機訪問,但是向List中間插入與移除元素的速度很慢。ListIterator只應該用來由后向前遍歷ArrayList,而不是用來插入和移除元素。因為那比LinkedList開銷要大很多。

LinkedList : 對順序訪問進行了優化,向List中間插入與刪除的開銷并不大。隨機訪問則相對較慢。(使用ArrayList代替。)還具有下列方法:addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 這些方法 (沒有在任何接口或基類中定義過)使得LinkedList可以當作堆棧、隊列和雙向隊列使用。

For example:

ArrayList與迭代器的使用

                List<Integer> list = new ArrayList<>();
		for (int i = 0; i < 10; i++) {
			list.add(i);
		}
		Iterator<Integer> iterator = list.iterator();
		while (iterator.hasNext()) {
			int i = iterator.next();
			System.out.println("iterator==" + i);
		}
		for(Integer i: list) {
			System.out.println("i=="+ i);
		}
                ListIterator<Integer> listIterator = list.listIterator();
		while (listIterator.hasNext()) {
			int  j = listIterator.next();
			System.err.println("listIterator==" + j);
		}

Set的功能方法

Set : 存入Set的每個元素都必須是唯一的,因為Set不保存重復元素。加入Set的元素必須定義equals()方法以確保對象的唯一性。Set與Collection有完全一樣的接口。Set接口不保證維護元素的次序。

HashSet : 為快速查找設計的Set。存入HashSet的對象必須定義hashCode()。

TreeSet : 保存次序的Set, 底層為樹結構。使用它可以從Set中提取有序的序列。

LinkedHashSet : 具有HashSet的查詢速度,且內部使用鏈表維護元素的順序(插入的次序)。于是在使用迭代器遍歷Set時,結果會按元素插入的次序顯示。

感謝各位的閱讀!關于redis中set和list的區別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

香港| 六枝特区| 大英县| 张家港市| 景泰县| 金湖县| 皮山县| 淅川县| 迁西县| 汉寿县| 赞皇县| 营口市| 鹿邑县| 米脂县| 青冈县| 东源县| 兴安县| 华容县| 汨罗市| 马鞍山市| 易门县| 搜索| 马龙县| 古丈县| 定陶县| 金湖县| 且末县| 清远市| 吕梁市| 若尔盖县| 大关县| 福清市| 陇南市| 招远市| 吉林市| 黄陵县| 贵州省| 东丽区| 西贡区| 溧阳市| 赤水市|