You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用for循环从数组提取唯一值并填充列表的问题排查

数组提取唯一值的问题修复

你的代码存在两个关键错误:

  • 第一行判断 if (numArray[i] != numArray[i]) 完全无效,一个值不可能不等于自身,直接导致后续逻辑从未执行。
  • 嵌套循环逻辑错误:即便进入内层循环,只要numArray[i] != numArray[j]就添加元素,会把同一个元素重复添加多次,根本达不到去重效果。

修正后的嵌套for循环实现

核心逻辑是遍历数组每个元素,检查该元素是否已存在于结果列表中,不存在则添加:

int[] numArray = new int[10] {1,2,2,3,3,4,4,5,5,9};
List<Int32> uNum = new List<Int32>();

for (int i = 0; i < numArray.Length; i++)
{
    bool isUnique = true;
    // 检查当前元素是否已在结果列表中
    for (int j = 0; j < uNum.Count; j++)
    {
        if (numArray[i] == uNum[j])
        {
            isUnique = false;
            break; // 找到重复直接跳出循环,避免多余判断
        }
    }
    if (isUnique)
    {
        uNum.Add(numArray[i]);
    }
}

// 测试输出
foreach (int num in uNum)
{
    Console.WriteLine(num);
}

更高效的HashSet实现

如果不限制必须用嵌套循环,HashSet<int>本身不允许重复元素,实现起来更高效:

int[] numArray = new int[10] {1,2,2,3,3,4,4,5,5,9};
HashSet<int> uniqueSet = new HashSet<int>(numArray);
List<Int32> uNum = new List<int>(uniqueSet);

简洁的Linq实现

用Linq的Distinct()方法可以一行完成去重:

int[] numArray = new int[10] {1,2,2,3,3,4,4,5,5,9};
List<Int32> uNum = numArray.Distinct().ToList();

内容的提问来源于stack exchange,提问作者Iveri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:46:01