在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. 如何从ATL对象集合中检索对象指针?
- 2. 从集合检索日后在Java中
- 3. 如何在PHP中从MongoDB集合中检索对象?
- 4. 检索集合对象数据Laravel
- 5. 从集合中检索/更新对象的最有效方法?
- 6. 从指针集合中快速检索特定对象
- 7. 如何使用DataBinder.Eval从集合中检索当前对象?
- 8. 从父对象集合中检索所有子代
- 9. Java集合以反向插入顺序检索对象
- 10. 如何从集合对象中检索用户定义的对象
- 11. Java对象实现Runnable,如何从集合中删除对象
- 12. Java集合对象声明
- 13. Java动态集合对象
- 14. 从对象中检索值?
- 15. Java - 从哈希映射检索对象
- 16. 从Java Swing组件检索对象
- 17. 检索对象中组合投票数最高的集
- 18. 使用Linq检索NHibernate中的对象和子集合
- 19. Mongoose:从集合中检索ObjectIds数组
- 20. 从集合中检索lambda表达式
- 21. 从scala集合中检索生成器
- 22. 从集合中检索数组
- 23. 无法从集合中检索数据
- 24. 从流星集合中检索数据
- 25. 在rails 2.3中,如何从二阶has_many关联中检索对象的集合?
- 26. 搜索对象而无需在java中迭代集合
- 27. 如何检查对象是否是Java中的集合类型?
- 28. LINQ:在一个集合中搜索单个对象的集合
- 29. 访问从对象集合
- 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