C# 在c中的字符串数组中添加唯一字符串

C# 在c中的字符串数组中添加唯一字符串,c#,arrays,string,unique,C#,Arrays,String,Unique,我关心的是将字符串添加到字符串数组中,但我希望在插入数组之前确保该字符串是唯一的。为此,我搜索并找到了许多方法,但我关心的是在添加字符串之前加快速度,而不是检查所有数组元素是否重复,因此我决定执行以下操作: 从URL挖掘项目中获取字符串URL,该项目可能返回数千个URL,有时可能会重复,作为交叉引用。 获取URL中所有字符的ASCII码,并将它们乘以字符的索引,这将为每个URL生成唯一的标识符。 第2点中的此值将是数组中插入此URL的索引。 现在的问题是,这个数组应该是动态的,如何根据我正在挖掘

我关心的是将字符串添加到字符串数组中,但我希望在插入数组之前确保该字符串是唯一的。为此,我搜索并找到了许多方法,但我关心的是在添加字符串之前加快速度,而不是检查所有数组元素是否重复,因此我决定执行以下操作:

从URL挖掘项目中获取字符串URL,该项目可能返回数千个URL,有时可能会重复,作为交叉引用。 获取URL中所有字符的ASCII码,并将它们乘以字符的索引,这将为每个URL生成唯一的标识符。 第2点中的此值将是数组中插入此URL的索引。 现在的问题是,这个数组应该是动态的,如何根据我正在挖掘的URL数量调整它的大小?。 数组将是具有许多空值的多孔平均值数组,有没有有效的方法来获取只有值的单元格? 下面的代码用于获取唯一字符串的位置。 int指数=1; int位置=0; 字符串s=Console.ReadLine; 字节[]ascivalues=Encoding.ASCII.GetBytess; Ascivalues中的前字节b { 位置+=b*指数; 索引++; Console.WriteLineb; }
如注释中所述,哈希集将是用于本例的集合。它表示一组唯一的值,并具有O1查找。 因此,只需循环要插入的字符串并将其添加到集合中。如果字符串已在其中,则不会再次添加该字符串

var set = new HashSet<string>();
foreach(var s in strings)
   set.Add(s);

如注释中所述,哈希集将是用于本例的集合。它表示一组唯一的值,并具有O1查找。 因此,只需循环要插入的字符串并将其添加到集合中。如果字符串已在其中,则不会再次添加该字符串

var set = new HashSet<string>();
foreach(var s in strings)
   set.Add(s);

我使用了字典并设法解决了它。请在下面的链接中检查我的代码

虽然我使用了添加两个字典并确保没有重复的proc,但有时我的代码给出了错误,试图添加重复的密钥

在下面的代码中,我在某个地方找到了它,并且工作得很好。在上面的链接中,我使用迭代在迭代过程中添加和删除

 public static void Add2Dic(IDictionary firstDict, IDictionary secondDict, bool bReplaceIfExists)
    {
        foreach (object key in firstDict.Keys)
        {
            if (!secondDict.Contains(key))
                secondDict.Add(key, firstDict[key]);
            else if (bReplaceIfExists)
                secondDict[key] = firstDict[key];
        }
    }

我使用了字典并设法解决了它。请在下面的链接中检查我的代码

虽然我使用了添加两个字典并确保没有重复的proc,但有时我的代码给出了错误,试图添加重复的密钥

在下面的代码中,我在某个地方找到了它,并且工作得很好。在上面的链接中,我使用迭代在迭代过程中添加和删除

 public static void Add2Dic(IDictionary firstDict, IDictionary secondDict, bool bReplaceIfExists)
    {
        foreach (object key in firstDict.Keys)
        {
            if (!secondDict.Contains(key))
                secondDict.Add(key, firstDict[key]);
            else if (bReplaceIfExists)
                secondDict[key] = firstDict[key];
        }
    }

为什么不使用列表呢?您可以随时检查list.Containsvalue。或者尝试使用哈希算法SHA256并将其插入字典。您可以在插入之前检查相同的哈希是否已存在。您可以尝试DateTime.Now.ToString我始终是唯一的我将尝试使用此技术为什么不使用列表?您可以随时检查list.Containsvalue。或者尝试使用哈希算法SHA256并将其插入字典。在插入之前,您可以检查相同的哈希是否已经存在。您可以尝试DateTime.Now.ToString我始终是唯一的我将尝试使用此技术感谢Magnus,我使用哈希集优化了我的代码,并且工作良好,直到现在,尽管我还没有在大量元素上测试它,谢谢Magnus,我用hashset优化了我的代码,并且工作得很好,直到现在,尽管我还没有在大量元素上测试它,