求一个数组里各个元素的出现次数。解决的方法有很多,下面自己写了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();
测试运行的截图如下: