您的位置:首页 > 职场人生

Java集合面试题(02) Java中List和Set之间区别

2017-11-21 11:44 597 查看

本文为本博主翻译,未经允许,严禁转载!

简介

Java中List和Set之间有什么区别是一个非常流行的Java集合面试问题,也是在Java中使用Collection类时要记住的一个重要的基本概念。 List和Set都是Java程序最重要的Collection类中的两个,以及各种Map实现。 List和Set的基本特征在Java的List和Set接口中被抽象出来,然后List和Set的各种实现都在相应接口之上增加了特定的特征。例如,Java中的ArrayList是由Array支持的List实现,而LinkedList是另一个像链接列表数据结构一样工作的List实现。在这个Java教程中,我们将看到List和Set集合之间的一些根本区别。由于List和Set在Java5泛型的引入中被泛化,所以这些差别同样适用于List和Set。

这篇文章是我之前关于Collection的文章的延续,例如HashMap与HashSet之间的区别HashMap与Hashtable之间的差异以及Concurrent
Collection与Synchronized Collection之间的区别。如果你还没有阅读,可能会发现它们很有用。

Java中List vs Set

在Java中,关于List和Set, 这里有几个值得注意的差异。请记住,它们都用于存储对象,并提供方便的API来插入,删除和检索元素,以及支持迭代。

1)List和Set在Java中的基本区别是允许重复的元素。 Java中的列表允许重复,而Set不允许任何重复。如果您在Set中插入重复项,则会替换旧值。 Java中Set的任何实现都只包含唯一的元素。

2)List和Set之间的另一个显著的差异是顺序。列表是有序集合,而集合是无序集合。列表维护元素的插入顺序,意味着之前插入的任何元素都会比之后插入的任何元素的索引要小。在Java中Set不保持任何顺序。尽管Set提供了另一个称为SortedSet的替代方法,它可以按照Set中存储的Object的Comparable和Comparator方法定义的特定排序顺序存储Set元素。

3)Set使用equals()方法来检查存储在Set中的元素的唯一性,而SortedSet使用compareTo()方法来实现元素的自然排序顺序。为了使元素在Set和SortedSet中正常工作,equals和compareTo必须相互一致。

4)Java中List接口的流行实现包括ArrayList,Vector和LinkedList。 Set接口的流行实现包括HashSet,TreeSet和LinkedHashSet。

Java中使用List和Set

另一个好的后续问题是“Java中什么时候使用List和Set”,这也可以根据List和Set的属性来回答,我们已经在这里学习了。Set和List之间的区别也告诉我们什么时候使用Set和何时更喜欢List。它非常清楚,如果你需要维护插入顺序或你的集合可以包含重复的元素,你需要选择List。另一方面,如果你的要求是保持独特的集合,并且没有任何重复,你可以选择Set。
重要的一点是List和Set都是从Collection接口派生的。简而言之,List和Set之间在Java中的主要区别在于List是一个允许重复的有序集合,而Set是一个不允许重复的无序集合。

原文链接

Difference between List and Set in Java Collection
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: