c# - 集合和基于集合的操作有哪些优点?

标签 c# java .net data-structures

我知道什么是集合以及集合的常见操作,例如并集、交集、差集、子集。但是我不明白在哪些情况下需要基于集合的操作?有现实世界的例子吗?与使用列表或哈希相比,使用集合有哪些优点?如果我有两个列表,那么我也可以找到这些列表的并集、交集。那么为什么要使用集合呢?

编辑 我特别想知道现实世界中我应该使用集合而不是列表的情况。

最佳答案

Set 保证其中没有重复的对象。 List 则不然,因此您可以在列表中包含多个“相等”对象的条目。有数以百万计的东西你可以使用set,它会让你的生活变得更轻松,例如,一组国家,一组用户名等。如果你使用列表来存储这些数据,你将需要检查是否在添加新元素之前,您的列表已包含相同的元素或不包含相同的元素,除非列表允许有重复项。

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

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

关于c# - 集合和基于集合的操作有哪些优点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088113/

相关文章:

c# - 外部异常 : A generic error occurred in GDI+

java - Maven Assembly Plugin 上传的引用工件

.net - 为什么使用 ImportingConstructor 属性?

java - 在 Spring Boot 应用程序之间传递文件/流

java - 首选项 API 中的大写字母

c# - .NET CLR 线程池耗尽 - 实现错误?

c# - 将 float[] 转换为字符串并返回 float[] - 测试失败,但我不明白为什么

c# - 什么时候使用 : Tuple vs Class in C# 7. 0

c# - Windows 10 平板电脑模式下对话框显示在父级后面

c# - 关于模拟框架 C# 和单元测试的问题