为什么LinkedHashSet没有实现List?

时间:2017-08-29 11:32:08

标签: java list linked-list set linkedhashset

据我了解,List订购的项目集合。 Set唯一项目的集合。

现在我的问题是,为什么LinkedHashSet描述有序唯一项的集合,实现Set接口(=> ; 唯一),但不是List界面(=> 有序)?

一个可能的论点是List用于随机访问数据结构,但LinkedList没有" true"随机访问。实际上,LinkedHashSet由内部链表支持。另外List的{​​{3}}也说不出来:

  

请注意,对于某些实现,这些[位置索引]操作可能会与索引值成比例地执行。

2 个答案:

答案 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();

是一个集合的实现,其中保留了插入顺序,并且不允许重复。