Set<E>接口和List<E>接口的根本区别是什么?
当前回答
Set不能包含重复的元素,而List可以。List(在Java中)也意味着顺序。
其他回答
List和Set都是接口。它们都扩展了Collection接口。set和list之间的重要区别是:
复制对象
List和Set之间的主要区别是List允许重复,而Set不允许重复。
订单
List是一个有序的集合,它维护插入顺序,这意味着在显示列表内容时,它将以它们插入到列表中的相同顺序显示元素。
Set是一个无序的集合,它不维护任何顺序。很少有维护顺序的Set实现,例如LinkedHashSet(它按照插入顺序维护元素)。
空元素
List允许任意数量的空元素。Set最多只能有一个null元素。
List | Set | |
---|---|---|
Duplicates | Yes | No |
Order | Ordered | Depends on implementation |
Position Access | Yes | No |
当我们讨论Java接口时,为什么不看看Javadoc呢?!
List是一个有序的集合(序列),通常允许 重复的 集合是不包含重复元素的集合,迭代 顺序可以由实现来保证
这里没有提到关于集合的缺乏顺序:这取决于实现。
List Vs Set
1) Set不允许重复。列表允许重复。基于Set的实现,它还维护插入顺序。
LinkedHashSet。它维护插入顺序。请参考此处
2)包含方法。根据集合的性质,它将为访问提供更好的性能。最好的情况是o(1)但是List有调用contains的性能问题。
Set:
不能有重复值 排序取决于实现。默认情况下,它不是有序的 不能通过索引进行访问
列表:
可以有重复的值 默认订购 可以通过索引访问吗
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 为什么元组可以包含可变项?
- 在Jar文件中运行类
- 带参数的可运行?
- 不区分大小写的“in”
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?