集合和基于集合的操作的优点是什么?

本文关键字:集合 操作 是什么 于集合 | 更新日期: 2023-09-27 18:14:15

我知道什么是集合,以及集合上常见的运算,如并、交、差、子集。然而,我不明白在哪些情况下需要基于操作的集合?有真实世界的例子吗?与使用列表或散列相比,使用set有什么优势?如果我有两个列表,那么我可以找到它们的并集,它们的交集。那么为什么要使用集合呢?

编辑我特别想知道在现实世界中,我应该使用set而不是list

集合和基于集合的操作的优点是什么?

Set保证里面没有重复的对象。List没有,所以你可以在一个列表中有多个"相等"对象的条目。你可以使用set,它会让你的生活更容易,例如,一组国家,一组用户名,等等。如果使用列表来存储这些数据,则需要在添加新元素之前检查列表是否已经包含相同的元素,除非列表允许有重复项。

换句话说,set可以看作是一个没有任何重复项的列表。然而,Set和List的接口在Java中并不完全相同。例如,您无法在集合中的某个位置获取元素。这是因为位置在集合中并不重要(但对于列表来说是重要的)。因此,选择使用哪个数据集完全取决于目的。

我自己发现Set在许多情况下非常有用,并且减少了重复检查的数量。我的一个用例是使用set来查找一个分子中有多少化学元素。分子包含一个原子对象列表,每个原子都与一个元素符号相关联,因此为了找到元素的类型,我循环遍历所有原子并将元素添加到元素集合中。

除其他外,集合通常保证访问时间为0 (logN)。它们还强制给定值只有一个条目(当您试图添加重复项时抛出异常)。

哈希通常提供O(1)访问,但不保证唯一性。