我知道什么是集合以及集合的常见操作,例如并集、交集、差集、子集。但是我不明白在哪些情况下需要基于集合的操作?有现实世界的例子吗?与使用列表或哈希相比,使用集合有哪些优点?如果我有两个列表,那么我也可以找到这些列表的并集、交集。那么为什么要使用集合呢?
编辑 我特别想知道现实世界中我应该使用集合而不是列表的情况。
最佳答案
Set
保证其中没有重复的对象。 List
则不然,因此您可以在列表中包含多个“相等”对象的条目。有数以百万计的东西你可以使用set,它会让你的生活变得更轻松,例如,一组国家,一组用户名等。如果你使用列表来存储这些数据,你将需要检查是否在添加新元素之前,您的列表已包含相同的元素或不包含相同的元素,除非列表允许有重复项。
换句话说,set 可以被认为是一个没有任何重复项的列表。然而,Java 中 Set 和 List 的接口(interface)并不完全相同。例如,您无法获取集合中特定位置的元素。这是因为位置在集合中并不重要(但对于列表而言)。因此,选择使用哪种数据收集完全取决于目的。
我自己发现 Set
在许多情况下非常有用,并且减少了重复检查的数量。我的一个用例是使用 set 来查找分子中有多少化学元素。该分子包含原子对象列表,每个原子都与一个元素符号相关联,因此为了找到元素的类型,我循环遍历所有原子并将元素添加到元素集中。所有重复项都会被轻松删除。
关于c# - 集合和基于集合的操作有哪些优点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088113/