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

redis中set和list差別有哪些

尚
原創
2019-06-29 17:38:2514190瀏覽

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