首頁 資料庫 Redis redis中set和list差別有哪些

redis中set和list差別有哪些

Jun 29, 2019 pm 05:38 PM

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相關知識,請造訪Redis使用教學欄位!

以上是redis中set和list差別有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在Redis群集中選擇一個碎片鍵? 如何在Redis群集中選擇一個碎片鍵? Mar 17, 2025 pm 06:55 PM

本文討論了在Redis群集中選擇碎片鍵,並強調了它們對性能,可伸縮性和數據分佈的影響。關鍵問題包括確保均勻數據分配,與訪問模式保持一致以及避免常見錯誤l

如何在Redis中實施身份驗證和授權? 如何在Redis中實施身份驗證和授權? Mar 17, 2025 pm 06:57 PM

本文討論了在REDIS中實施身份驗證和授權,重點是實現身份驗證,使用ACL以及確保REDIS的最佳實踐。它還涵蓋了管理用戶權限和工具以增強重新安全性。

如何將Redis用於工作隊列和背景處理? 如何將Redis用於工作隊列和背景處理? Mar 17, 2025 pm 06:51 PM

本文討論了使用REDIS進行工作隊列和背景處理,詳細的設置,作業定義和執行。它涵蓋了原子運營和工作優先級等最佳實踐,並解釋了REDIS如何提高處理效率。

如何在REDIS中實施緩存無效策略? 如何在REDIS中實施緩存無效策略? Mar 17, 2025 pm 06:46 PM

本文討論了在REDIS中實施和管理緩存無效的策略,包括基於時間的到期,事件驅動的方法和版本控制。它還涵蓋了緩存到期的最佳實踐和監視和自動的工具

如何監視REDIS群集的性能? 如何監視REDIS群集的性能? Mar 17, 2025 pm 06:56 PM

文章討論了使用Redis CLI,Redis Insight和Datadog和Prometheus等工具等工具進行監視REDIS群集的性能和健康。

如何將Redis用於酒吧/子消息傳遞? 如何將Redis用於酒吧/子消息傳遞? Mar 17, 2025 pm 06:48 PM

本文介紹瞭如何將Redis用於酒吧/子消息傳遞,涵蓋設置,最佳實踐,確保消息可靠性和監視性能。

如何在Web應用程序中使用REDI進行會話管理? 如何在Web應用程序中使用REDI進行會話管理? Mar 17, 2025 pm 06:47 PM

本文討論了在Web應用程序中使用REDIS進行會話管理,詳細介紹設置,諸如可伸縮性和性能以及安全措施之類的好處。

如何確保重新侵害常見漏洞? 如何確保重新侵害常見漏洞? Mar 17, 2025 pm 06:57 PM

文章討論了確保重新侵害漏洞,重點關注強密碼,網絡綁定,命令禁用,身份驗證,加密,更新和監視。

See all articles