C#比较两个int类型list是否相等,要求list长度一致且包含的int值完全一致,但int的顺序可不一致
时间: 2024-09-07 13:03:40 浏览: 39
dotnet C# 使用 EqualityComparer 提升泛型值类型相等判断性能.rar
在C#中,如果你有一个整数类型的List<int>并且想要检查两个列表是否相等,即使元素顺序不同,你可以通过迭代并逐个比较元素的方式来完成这个任务。一种常见的做法是创建一个新的HashSet或List<int>来存储第一个列表的内容,然后遍历第二个列表,如果发现有不在第一个集合或列表中的元素,则说明它们不相等。
以下是简单的步骤:
1. 创建一个HashSet或新的List<int>来存储第一个列表(假设是`listA`)的所有元素,因为HashSet不允许重复,所以会自动去重。
```csharp
HashSet<int> setA = new HashSet<int>(listA);
```
2. 遍历第二个列表(假设是`listB`),将每个元素与`setA`中的元素对比,如果找到相同的元素,则从`setA`中移除,直到`setA`为空或者遍历完`listB`。
```csharp
foreach (int num in listB)
{
if (!setA.Contains(num))
{
// 如果setA中不再包含num,说明两个列表不全相等
return false;
}
setA.Remove(num);
}
```
3. 如果`setA`最终为空,那么说明`listB`中包含了与`listA`所有元素相同但顺序可能不同的子集,因此判断两个列表相等。
```csharp
return setA.Count == 0;
```
阅读全文