List去重复

网上搜的都这么写:

private   List   removeDuplicateObj(List   list)   {      

               Set   someSet   =   new   HashSet(list);      

              //   将Set中的集合,放到一个临时的链表中(tempList)      

                  Iterator   iterator   =   someSet.iterator();      

                  List   tempList   =   new   ArrayList();      

                  int   i   =   0;      

                  while   (iterator.hasNext())   {      

                               

                          tempList.add(iterator.next().toString());      

                          i++;      

                  }      

                  return   tempList;      

          }   

我这么写的:

   private   List   removeDuplicateObj(List   list)   {      

   Set   someSet   =   new   HashSet(list);      

   return new ArrayList(someSet);

}

### 如何在 C# 中去除 `List` 中的重复项 在 C# 中,可以通过多种方式实现从列表中移除重复项的功能。以下是几种常见的方法及其对应的代码示例。 #### 方法一:使用字典存储唯一键 通过创建一个字典来跟踪已经遇到过的值,并构建一个新的列表以保存唯一的元素[^1]。 ```csharp static List<string> RemoveDuplicates(List<string> inputList) { Dictionary<string, int> uniqueStore = new Dictionary<string, int>(); List<string> finalList = new List<string>(); foreach (string currValue in inputList) { if (!uniqueStore.ContainsKey(currValue)) { uniqueStore.Add(currValue, 0); finalList.Add(currValue); } } return finalList; } ``` #### 方法二:利用 LINQ 的 Distinct() 函数 LINQ 提供了一个简单的方法——`Distinct()` 来直接返回去重后的集合[^1]。 ```csharp using System.Linq; static List<T> RemoveDuplicatesLinq<T>(List<T> inputList) { return inputList.Distinct().ToList(); } ``` #### 方法三:遍历并手动比较 如果不想引入额外的数据结构或者库函数,则可以采用双重循环的方式逐一检查当前元素是否已经在新列表中存在[^2]。 ```csharp static List<int> RemoveDuplicatesManual(List<int> inputList) { List<int> resultList = new List<int>(); foreach(var item in inputList){ bool isDuplicate = false; foreach(var existingItem in resultList){ if(item.Equals(existingItem)){ isDuplicate=true; break; } } if(!isDuplicate){ resultList.Add(item); } } return resultList; } ``` 以上三种方法各有优劣,在实际开发过程中可以根据具体需求选择最合适的方案。通常情况下推荐优先考虑效率较高的前两种方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值