c# 嵌套循环-从List中获取不同的元素(无需Linq)

如果我有一个列表,其中包含一些可能重复的字符串元素,例如. "dog","cat","dog","cow","cow","owl".我需要从该列表中获取不同的元素(所以我需要写出所有元素的列表,不包含重复的元素,例如:……)。"dog","cat","cow","owl").一定有一种方法如何使用它与嵌套循环,但我卡在了下面的东西。

IList<string> animals;
int a = animals.Count();
for (int i=0; i<a; i++)
   {
    foreach (string animal in animals)
    {
     if (animals[i+1] != animals[i])
      {
       Console.WriteLine(animals[i]);
       }
    }
  }

这是很接近的东西,但它不是正确的.也许嵌套的内部循环应该是 “while “或另一个 “for”.Appreciate any tip on above.Thanks!

解决方案:

使用一个 HashSet<string> 该类与List类似,但不允许重复。

IList<string> animals = new List<string> {"Lion", "Wolf", "Tiger", "Dog", "Cat", "Lion", "Tiger"};
HashSet<string> uniques = new HashSet<string>(animals);
foreach(animal in uniques)
   Console.WriteLIne(animal);

如果你想使用循环,你可以使用第二个列表来简化你的代码,在这里你将存储唯一的值,同时你也可以避免假唯一性,当动物名称中唯一的区别是大小写时。

IList<string> animals = new List<string> {"Lion", "Wolf", "Tiger", "Dog", "Cat", "Lion", "tiger"};
List<string> uniques = new List<string>();
foreach (string animal in animals)
{
    if (!SearchCaseInsensitive(uniques, animal))
        uniques.Add(animal);
}
foreach(string animal in uniques)
    Console.WriteLine(animal);


bool SearchCaseInsensitive(List<string> source, string search)
{
    string lowerCaseSearch = search.ToLower();
    foreach(string animal in source)
        if(animal.ToLower() == lowerCaseSearch)
            return true;
    return false;
}

给TA打赏
共{{data.count}}人
人已打赏
未分类

为什么只有一个按钮?

2022-9-12 11:11:16

未分类

在kotlin中,Recycler视图不显示jason数据。

2022-9-12 11:11:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索