从C#中的数组中删除相同的元素
本文关键字:元素 数组 删除 | 更新日期: 2023-09-27 17:58:13
如何从C#中的Array中删除相同的元素?
例如array{0,2,2,8,4,6,1,0,4}
并且输出将是array{0,2,8,4,6,1}
您可以使用LINQ并执行myArray.Distinct().ToArray()
。
using System.Linq;
...
var output = array.Distinct().ToArray();
无LINQ:
int[] array = new[] { 0, 2, 2, 8, 4, 6, 1, 0, 4 };
List<int> result = new List<int>();
foreach (int element in array)
{
if (!result.Contains(element))
result.Add(element);
}
int[] resultArray = result.ToArray();
下面是一个应该在.NET2和C#2中正确工作的方法。
(由于HashSet<T>
类在.NET2中不可用,因此它使用Dictionary<K,V>
来进行有效的O(1)键查找,忽略该值。)
int[] input = new int[] { 0, 2, 2, 8, 4, 6, 1, 0, 4 };
int[] output = DistinctItems(input); // 0, 2, 8, 4, 6, 1
// ...
public static T[] DistinctItems<T>(T[] input)
{
Dictionary<T, bool> dict = new Dictionary<T, bool>(input.Length);
return Array.FindAll(input, delegate(T item)
{
if (dict.ContainsKey(item))
return false;
dict.Add(item, true);
return true;
});
}
如果您根本不想允许多个具有相同值的条目,则应该使用HashSet<T>
。就像在添加元素时直接检测到的一样,如果元素已经存在于内部。但这取决于你的需求。。。