据我了解,List
是订购的项目集合。 Set
是唯一项目的集合。
现在我的问题是,为什么LinkedHashSet
描述有序项唯一项的集合,实现Set
接口(=> ; 唯一),但不是List
界面(=> 有序)?
一个可能的论点是List
用于随机访问数据结构,但LinkedList
没有" true"随机访问。实际上,LinkedHashSet
由内部链表支持。另外List
的{{3}}也说不出来:
请注意,对于某些实现,这些[位置索引]操作可能会与索引值成比例地执行。
答案 0 :(得分:2)
如果它实现了List
,您就可以将其用作List
:
List list = new LinkedHashSet();
这可能会导致重复的问题不会出现在Set
中,但在List
中是允许的。
换句话说,当它不允许重复时,即使它保持订单并且允许添加,获取,删除和检查大小,也不应该声明某些内容是List
。
与集合不同,列表通常允许重复元素
--List documentation
答案 1 :(得分:-2)
因为LinkHashSet是实现set接口的类。 List和Set有自己的功能List允许重复,而set不允许重复,但是如果你想在HastSet中插入线性顺序,那么LinkedHashSet本身没有重复使用..
Set s = new LinkedHashSet();
是一个集合的实现,其中保留了插入顺序,并且不允许重复。