Поиск дубликатов без LINQ - C#

Узнай цену своей работы

Формулировка задачи:

Есть список объектов класса Class1.
Листинг программы
  1. public class Class1
  2. {
  3. public int Num; //номер по порядку
  4. public string ID; //идентификатор
  5. }
т.е. List<Class1> Нужно вывести один раз ID объекта, который имеет дубликаты, и все Num, где он дублируется. И так для всех объектов Т.е. вид примерно такой - asdbtr = 1,5,8,9; dsabte = 2,12,54,75 ... Помогите решить, пожалуйста

Решение задачи: «Поиск дубликатов без LINQ»

textual
Листинг программы
  1. // using System;
  2. // using System.Collections.Generic;
  3.  
  4. List<Class1> sourceList = ...; // заполненный список
  5.  
  6. Dictionary<string, List<int>> groups = new Dictionary<string, List<int>>();
  7.  
  8. for (int index = 0; index < sourceList.Count; ++index)
  9. {
  10.     Class1 current = sourceList[index];
  11.    
  12.     if (groups.ContainsKey(current.ID))
  13.     {
  14.         groups[current.ID].Add(index);
  15.     }
  16.     else
  17.     {
  18.         List<int> indices = new List<int>(4);
  19.         indices.Add(index);
  20.         groups[current.ID] = indices;
  21.     }
  22. }
  23.  
  24. foreach (var entry in groups)
  25. {
  26.     Console.Write(entry.Key);
  27.     Console.Write(" : ");
  28.    
  29.     var indices = entry.Value;
  30.     for (int index = 0; index < indices.Count; ++index)
  31.     {
  32.         Console.Write(indices[index]);
  33.        
  34.         if (index != (indices.Count - 1))
  35.         {
  36.             Console.Write(", ");   
  37.         }
  38.     }
  39.    
  40.     Console.Write("; ");
  41. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы