查找数组里相同元素的个数

求一个数组里各个元素的出现次数。解决的方法有很多,下面自己写了2个:

 //找出数组中各元素出现的次数
            int[] list = new int[] { 1, 1, 2, 3, 1, 2, 4, 3, 3, 2, 4, 5, 6, 5, 6, 7, 3, 2, 8 };
            Console.Write("原数组:");
            foreach (int item in list)
            {
                Console.Write(item+" ");
            }
            Console.WriteLine();
            //方法一:遍历数组,存到字典中
            Console.WriteLine("---------------方法一---------------------------");
            Dictionary<int, int> dic = new Dictionary<int, int>();
            foreach (int item in list)
            {
                //如果字典中不存在key为当前item的值的对象
                if (!dic.ContainsKey(item))
                {
                    //把当前数组元素添加到字典中(key为当前item,值为1)
                    dic[item] = 1;
                }
                else
                {
                    //字典中存在key为当前数组元素的对象,把这个对象的value加1
                    dic[item]++;
                }
            }

            foreach (var item in dic)
            {
                Console.WriteLine(item.Key + ":出现了{0}次。", item.Value);
            }
            Console.WriteLine("---------------方法二---------------------------");
          //方法二:linq
          var dic2=list.GroupBy(x => x).Select(
                                        x => new { 
                                                     Key = x.Key, Value = x.Count()
                                                 }
                                        );
          foreach (var item in dic2)
          {
              Console.WriteLine(item.Key + ":出现了{0}次。", item.Value);
          }
            Console.ReadKey();
View Code

测试运行的截图如下:

 

原文地址:https://www.cnblogs.com/527289276qq/p/4441084.html