|
|
1
85
|
|
|
2
46
我认为那篇声称它保留了秩序的文章是完全错误的。对于简单的测试,由于内部结构的原因,插入顺序可能会得到很好的保留,但这并不能保证,也不能总是这样工作。我会试着想出一个反例。 编辑:以下是反例:
可能的 如果您从未删除任何项目,它将保留插入顺序。我不确定,但我不会完全感到惊讶。然而,我认为依靠这一点是一个非常糟糕的想法:
|
|
3
7
因此,它是否在当前实现中实际保留了元素的顺序并不重要,因为它没有这样做的文档记录,即使它现在看起来是这样,这在将来的任何时候都可能发生变化(即使在框架的热修复中)。 书面合同 实施细节 |
|
|
4
3
特别是有一个
这将为您提供排序,但不太可能是插入顺序排序。因为您可以使用自定义
|
|
|
5
2
不,哈希集不会保留插入顺序,至少不可预测。您可以使用LinkedHashSet(Java)或等效工具。LinkedHashSet将保持秩序。
|
|
|
6
2
正在阅读的源代码 HashSet.AddIfNotPresent 假设没有任何删除 .
因此
|