Java中List和Set的区别是什么

1,179 阅读4分钟

Java中的List与Set

List 和 Set的主要区别 在于, List 是一个有序的集合,而 Set 是一个无序的集合。Java集合框架为不同的需求提供了多个集合类,但所有的集合都可以大致分为三类。 List, Set, 和 Map。所有的 List、 Set和 Map 都被定义为接口,然后你有几个实现,比如ArrayListVector 是List 接口 的流行实现 ,而HashSet是 Set 接口 的流行实现 。

这也是流行的Java集合面试问题之一,你可以在Java开发者面试中期待它,特别是在初级阶段。

在这个Java教程中,我们将主要看到 List 和 Set 集合在顶层 有什么区别 ,以及如何选择 在Java 中 何时使用 List ,何时使用 Set 。

我相信,一旦你能够理解 List 和 Set的根本区别 , 你就很有可能精通何时使用 List ,何时选择 Set,这是任何一个Java程序员的关键技能。

Java中List和Set的区别

正如我所说的 ,Set 和 List的主要区别 在于 List 是一个有序的 集合 ,这意味着 List 保留了一个元素插入 List的 顺序 。

因此,如果你 在 对象 B 之前 插入 对象 A ,那么A将被存储在比B更低的索引处。由于 Set 是一个无序的集合,它不保持任何元素的插入顺序 。

尽管你可以有 SortedSet ,它在 Set 接口 之上 提供了排序功能 ,你可以 通过使用比较器比较 在Set 内存储对象时 强加自然顺序或 对象 或任何自定义顺序 。

另一个显著的区别列表 的另一个重要区别 是, List 允许你在集合中存储重复的对象,而 Set 不允许任何重复的对象。这是非常重要的,因为它清楚地表明,如果你想要一个唯一的对象集合,就使用 Set。 对象的重复 是通过equals()方法 检测的。

因此,如果两个对象使用equals方法是相等的,那么 如果使用add()方法添加 ,后一个对象将在 Set中取代前一个对象 ,由于这个原因 ,Set 中只允许一个空元素 。

值得注意的是,在像TreeSet这样的SortedSet 中,compareTo方法被用来比较对象并决定一个对象是否重复。如果两个对象的compareTo()方法返回0,那么它们就是重复的,这就是为什么说compareTo应该与java中的equals方法一致。

Java中的List与Set

为了清楚起见,让我们看看List 和 Set 接口在点格式上的 区别 。

1. List 保持元素的插入顺序,而 Set 不保持任何顺序。

2. 列表 允许重复的对象,而 Set 不允许任何重复的对象。

如果你比较 List 和 Set 接口 的实现 ,比如ArrayList和HashSet , 你不仅可以看到 List 和 Set 的特性所带来的差异 ,还可以看到实现层面的差异,比如ArrayList使用数组作为数据结构,而HashSet使用散列机制。

这里有一个关于Java中List、Set和Map之间区别的很好的总结。

Difference between List and Set in Java Collection framework

以上就是关于 Java中 List 和 Set 接口区别 的全部内容。记住这个区别是很重要的,这不仅是对Java开发人员的面试,也是为了在正确的情况下使用正确的集合。底线是, List 是一个有序的集合,而 Set 是无序的, List 允许重复,而 Set不 允许重复。如果你 在 Java中 遇到 List 和 Set 之间的任何其他重大区别,请告诉我们 。

你可能喜欢的其他Java集合教程

  • 如何在Java中按键和值对Map进行排序?(教程)

  • Java中HashMap和LinkedHashMap的区别?(答案)

  • 我最喜欢的深入学习Java的免费课程(课程)

  • Java中Hashtable和HashMap的区别?(答案)

  • 如何在Java中对ArrayList进行升序和降序排序?(教程)

  • Java中HashSet和TreeSet的区别?(答案)

  • 我最喜欢的学习面向对象编程的免费课程(课程)

  • Java中ArrayList和HashSet的区别?(答案)

  • Java中ArrayList和LinkedList的区别?(答案)

  • 7个学习Java中设计模式的最佳课程?(课程)

  • Java中TreeMap和TreeSet的区别?(答案)

  • 学习Java中数据结构和算法的10大课程?(课程)

  • Java中HashMap和ConcurrentHashMap的区别?(答案)

  • 我最喜欢的学习软件架构的课程?(课程)

  • Java中Vector和ArrayList的区别?(答案)

  • Java中EnumMap和HashMap的区别

感谢你阅读这篇Java集合面试题的解释。如果你喜欢这篇文章,那么请与你的朋友和同事分享它。如果您有任何问题或反馈,请发表评论。