它们之间有什么区别?我知道
LinkedHashSet 是 HashSet 的有序版本,它维护一个跨所有元素的双向链表。当您关心迭代顺序时,请使用此类而不是 HashSet。当您遍历 HashSet 时,顺序是不可预测的,而 LinkedHashSet 允许您按照插入元素的顺序遍历元素。
但是在LinkedHashSet 的源代码中,只有调用HashSet 的构造函数。那么双向链表和插入顺序在哪里呢?
原文由 Shikarn-O 发布,翻译遵循 CC BY-SA 4.0 许可协议
它们之间有什么区别?我知道
LinkedHashSet 是 HashSet 的有序版本,它维护一个跨所有元素的双向链表。当您关心迭代顺序时,请使用此类而不是 HashSet。当您遍历 HashSet 时,顺序是不可预测的,而 LinkedHashSet 允许您按照插入元素的顺序遍历元素。
但是在LinkedHashSet 的源代码中,只有调用HashSet 的构造函数。那么双向链表和插入顺序在哪里呢?
原文由 Shikarn-O 发布,翻译遵循 CC BY-SA 4.0 许可协议
HashSet 是 无序 且未排序 的 Set。
LinkedHashSet 是 HashSet 的 _有序版本_。
HashSet 和 LinkedHashSet 之间的唯一区别是:
LinkedHashSet 维护插入顺序。
当我们遍历 HashSet 时,顺序是不可预测的,而在 LinkedHashSet 的情况下是可预测的。
LinkedHashSet 维护插入顺序的原因是:
底层使用的数据结构是 Doubly-Linked-List 。
原文由 Hema Ganapathy 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答1.7k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
4 回答2.3k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答835 阅读✓ 已解决
2 回答1.4k 阅读
正如您所说,两者之间的区别是:
至于你的问题:
答案在于
LinkedHashSet
使用 哪些构造函数 来构造基类:并且(一个例子)描述了一个
HashSet
采用布尔参数的构造函数,看起来像这样: