在Java 5中,如果我有一個集合,並且我將兩個對象添加到集合中。當我檢索對象時,它是否會按照我添加的順序返回給我? 我無法找到答案。它取決於我使用哪個Set實現?java從集合中檢索對象
0
A
回答
9
是的,這取決於您使用哪個實施。例如,LinkedHashSet
將保留插入順序:
設置界面的哈希表和鏈接列表實現,具有可預測的迭代順序。這個實現與HashSet的不同之處在於它保持了一個雙向鏈表,它貫穿其所有條目。此鏈接列表定義迭代排序,即元素插入到集合中的順序(插入順序)。請注意,如果元素重新插入到集合中,則插入順序不受影響。 (元素e重新插入一組if s.add(e)在s.contains(E)將調用之前立即返回true調用秒)
...但HashSet
不會:
它對集合的迭代次序不作任何保證;特別是,它不能保證訂單會隨着時間的推移保持不變。這個類允許null元素。
0
取決於Set
的實施。 LinkedHashSet
確實如此。
0
是的,它取決於您選擇的實施。 HashSet將不保證訂單,但LinedHashSet將。
0
JavaDocs是你最好的朋友。它是特定於實現的。例如:
java.util.Set:
Iterator<E> iterator();
Returns an iterator over the elements in this set. The elements are returned in no particular order (unless this set is an instance of some class that provides a guarantee).
和
java.util.TreeSet:
public Iterator<E> iterator();
Returns an iterator over the elements in this set in ascending order.
2
0
Set
接口本身用於無序容器實現。但是可能會有Set
的實現返回元素的特定順序。
也看到了Set.iterator
文檔:
返回在此set的元素的迭代器。這些元素沒有特定的順序返回(除非該集是一些類,它提供了保證的實例)
相關問題
- 1. 從父對象集合中檢索所有子代
- 2. 從指針集合中快速檢索特定對象
- 3. 從集合中檢索/更新對象的最有效方法?
- 4. 如何使用DataBinder.Eval從集合中檢索當前對象?
- 5. 如何從集合對象中檢索用戶定義的對象
- 6. Java對象實現Runnable,如何從集合中刪除對象
- 7. 從對象中檢索值?
- 8. 從Java Swing組件檢索對象
- 9. 使用Linq檢索NHibernate中的對象和子集合
- 10. 在rails 2.3中,如何從二階has_many關聯中檢索對象的集合?
- 11. Mongoose:從集合中檢索ObjectIds數組
- 12. 從scala集合中檢索生成器
- 13. 從集合中檢索數組
- 14. 從集合中檢索lambda表達式
- 15. 搜索對象而無需在java中迭代集合
- 16. 如何檢查對象是否是Java中的集合類型?
- 17. LINQ:在一個集合中搜索單個對象的集合
- 18. 從對象獲取集合
- 19. 我們可以通過多少種方式從集合中檢索對象?
- 20. Java LinkedList - 檢索對象的索引
- 21. 使用linq從集合中檢索點對?
- 22. Java集合地圖:如何檢索對象的地圖使用的containsValue功能
- 23. 從OrientDB檢索OrientVertex對象
- 24. 從JSON對象檢索值
- 25. 從檢索請求對象
- 26. 如何檢查對象是否在Domain對象的集合中?
- 27. 從mvc中的URL中檢索對象
- 28. 從java中的對象數組中添加和檢索元素
- 29. MongoDB - 從集合中刪除對象
- 30. 從集合中刪除對象
我要問「爲什麼不直接使用一個隊列」,然後我看到這個詞「設置」。 :)所以我假設你想讓你的數據結構保持「唯一性」屬性?如果是,那麼Jon Skeet提到,LinkedHashSet是完美的。如果你不關心唯一性,那麼隊列就可以做得很好。 – eternaln00b 2012-02-09 18:58:22
這是'Set'的文檔。請參閱http://docs.oracle.com/javase/6/docs/api/java/util/Set.html – 2012-02-09 19:03:13