C# 增加数组中重复元素值的值

C# 增加数组中重复元素值的值,c#,C#,我有一些C代码。这段代码的目的是生成一个整数列表,测试它们的值以确定它们是否是重复的条目值,并在列表中出现任何重复条目时将其更改为唯一的 static int oldHash, newHash; // used if collision true, // renews current hash static Boolean Uniqiue; // only update variables? public static int collisionHandling(int oldHash, b

我有一些C代码。这段代码的目的是生成一个整数列表,测试它们的值以确定它们是否是重复的条目值,并在列表中出现任何重复条目时将其更改为唯一的

static int oldHash, newHash; // used if collision true, // renews current hash
static Boolean Uniqiue; // only update variables? 

public static int collisionHandling(int oldHash, bool unique)
{
    if (!unique)
    {
        newHash = oldHash + 1;
        return newHash;
    }
    else
    {
        newHash = oldHash;
        return 0;
    }
}

public static int hash(int value) {
    return value +1;
}

static void Main(string[] args)
{
    List<int> intLst = new List<int>(20);

    intLst.Add(1);
    intLst.Add(1);
    intLst.Add(1);

    int tst = 0;

    while (tst <= intLst.Count - 1)
    {
        int hashResult = hash(intLst[tst]);

        if (intLst.Contains(hashResult))
        {
            int collisionResult = collisionHandling(hashResult, false);
            Console.WriteLine(collisionResult);
        }

        tst += 1;
    }

    Console.ReadLine();
}
太好了,我已经在一个新列表中添加了值并进行了调整。但是,我还没有确定列表中的唯一值我该怎么做?

原则是不使用哈希表,我必须创建一个。哈希表必须具有唯一的键,因此要处理重复尝试(冲突)。我不希望删除散列键,我希望以使其唯一的形式处理它。因此,我的方法应该类似于
value=value+Random.Next()
,因为这将有一个与“value=value+1”相对应的更准确的结果。但是,这并不能确保条目的唯一性


提前感谢。

您可以使用linq
Distinct
从列表中提供一组。(即从列表中删除重复项)

然后在删除重复项时添加新编号

var list = ...;
var unique = list.Distinct().ToList();
var random = new Random();

for(int i = unique.Count(); i < list.Count(); i++)
{            
    int r;
    do
    {
        r = random.Next();
    } while(unique.Contains(r))
    unique.Add(r);
}

// unique is the result you want
list = unique;
var列表=。。。;
var unique=list.Distinct().ToList();
var random=新的random();
for(int i=unique.Count();i
请注意,此方法不稳定。这意味着它不能保证您的物品的顺序。理论上,这也可以变成无限循环

var list = ...;
var unique = list.Distinct().ToList();
var random = new Random();

for(int i = unique.Count(); i < list.Count(); i++)
{            
    int r;
    do
    {
        r = random.Next();
    } while(unique.Contains(r))
    unique.Add(r);
}

// unique is the result you want
list = unique;