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

kin*_*ode 1 c# arrays string unique

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

  1. 获取字符串(来自 URL Mining Project 的 URL,可能会返回数千个 URL,有时可能会重复,作为交叉引用)。
  2. 获取 URL 中所有字符的 ASCII 并将它们相加乘以字符的索引(这是为每个 URL 制作唯一标识符)。
  3. 第 2 点中的此值将是要插入此 URL 的数组中的索引。
  4. 现在的问题是,这个数组应该是动态的(如何根据我正在挖掘的 URL 数量调整它的大小?)。
  5. 数组将是多孔的(意味着数组有许多空值),有没有有效的方法来获取只有值的单元格?
  6. 下面的代码用于获取唯一字符串的位置。
int index = 1;
int position = 0;
string s = Console.ReadLine();
byte[] ASCIIValues = Encoding.ASCII.GetBytes(s);

foreach(byte b in ASCIIValues) 
{
    position += b * index;
    index++;
    Console.WriteLine(b);
}
Run Code Online (Sandbox Code Playgroud)

Mag*_*nus 5

正如评论中提到的, aHashSet将是用于这种情况的集合。它表示一组(唯一的)值并具有 O(1) 查找。因此,您只需循环要插入的字符串并将它们添加到集合中。如果字符串已经在那里,它将不会再次添加。

var set = new HashSet<string>();
foreach(var s in strings)
   set.Add(s);
Run Code Online (Sandbox Code Playgroud)