C# 在c中的字符串数组中添加唯一字符串
我关心的是将字符串添加到字符串数组中,但我希望在插入数组之前确保该字符串是唯一的。为此,我搜索并找到了许多方法,但我关心的是在添加字符串之前加快速度,而不是检查所有数组元素是否重复,因此我决定执行以下操作: 从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; }C# 在c中的字符串数组中添加唯一字符串,c#,arrays,string,unique,C#,Arrays,String,Unique,我关心的是将字符串添加到字符串数组中,但我希望在插入数组之前确保该字符串是唯一的。为此,我搜索并找到了许多方法,但我关心的是在添加字符串之前加快速度,而不是检查所有数组元素是否重复,因此我决定执行以下操作: 从URL挖掘项目中获取字符串URL,该项目可能返回数千个URL,有时可能会重复,作为交叉引用。 获取URL中所有字符的ASCII码,并将它们乘以字符的索引,这将为每个URL生成唯一的标识符。 第2点中的此值将是数组中插入此URL的索引。 现在的问题是,这个数组应该是动态的,如何根据我正在挖掘
如注释中所述,哈希集将是用于本例的集合。它表示一组唯一的值,并具有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优化了我的代码,并且工作得很好,直到现在,尽管我还没有在大量元素上测试它,