Удаление повторяющихся элементов в ArrayList - C# (184301)

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

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

Есть метод в котором открывается файл и далее происходит запись столбцов (но это не важно)
Листинг программы
  1. public ArrayList getTableArray()
  2. {
  3. ArrayList tmpTableArray = new ArrayList(); //Таблица со значениями
  4. countColumn = 0;
  5. OpenFileDialog ofd = new OpenFileDialog();
  6. ofd.Filter = "Text files (*.txt, *.log)|*.txt;*.log|All files (*.*)|*.*";
  7. try
  8. {
  9. path = @"C:\Users\Nikita\Desktop\SuperProg\20150115_124458_BaF2_1850V_25mV_2us_tyv_6db_Cs137_PED.txt"; //Путь
  10. StreamReader sr = new StreamReader(path);
  11. // По строчное чтение
  12. while (!sr.EndOfStream)
  13. {
  14. string[] tmp = sr.ReadLine().Split(' ');
  15. if (countColumn < tmp.Length) countColumn = tmp.Length; //Ищем строку с наибольшем колличеством столбцов
  16. tmpTableArray.Add(tmp);
  17. }
  18. sr.Close();
  19. return tmpTableArray;
  20. }
  21. catch
  22. {
  23. throw;
  24. }
Далее происходит передача в другой ArrayList для отрисовки по выбору столбца гистограммы
Листинг программы
  1. private void panel1_Paint(object sender, PaintEventArgs e)
  2. {
  3. Graphics gr = this.CreateGraphics();
  4. gr = panel1.CreateGraphics();
  5. ArrayList tableArray; //Таблица со значениями
  6. tableArray = getTableArray(); //Таблица со значениями
  7. int tmp_i = 0;
  8. if (comboBox1.SelectedItem != null && comboBox1.SelectedItem.ToString() != "")
  9. {
  10. richTextBox1.Clear();
  11. selectColumn = int.Parse(comboBox1.SelectedItem.ToString()) - 1; //Выбранный столбец (канал)
  12. foreach (string[] item in tableArray)
  13. {
  14. if (comboBox1.SelectedItem.ToString() == null) break;
  15. if (selectColumn+1 > item.Length) break;
  16. //gr.DrawLine(new Pen(Color.Black), tmp_i + 16, 550, tmp_i + 16, int.Parse(item[selectColumn]));
  17. //textBox1.Text += item[selectColumn];
  18. tmp_i++;
  19. //richTextBox1.Text += mas;
  20. List<int> ag = new List<int> { int.Parse(item[selectColumn]) };
  21. ag = ag.Distinct().ToList();
  22. IEnumerable<int> disting = ag.Distinct();
  23. foreach(int ags in disting)
  24. {
  25. richTextBox1.Text += ags + "\t\n";
  26. }
  27. }
  28. }
  29. }
Проблема заключается в том что мне необходимо из полученного столбца чисел от item[selectColumn] удалить все не повторяющиеся числа, что я и попытался реализовать через

Distinct

но по моему говнокоду мне выводятся теже самые числа, без обработки

Решение задачи: «Удаление повторяющихся элементов в ArrayList»

textual
Листинг программы
  1.  private void panel1_Paint(object sender, PaintEventArgs e)
  2.         {
  3.             Graphics gr = e.Graphics;
  4.             ArrayList tableArray = getTableArray(); //Таблица со значениями
  5.  
  6.             if (comboBox1.SelectedItem != null && comboBox1.SelectedItem.ToString() != "")
  7.             {
  8.                 richTextBox1.Clear();
  9.  
  10.                 selectColumn = int.Parse(comboBox1.SelectedItem.ToString()) - 1; //Выбранный столбец (канал)
  11.                 List<int> ag = new List<int>(tableArray.Count);
  12.                 foreach (string[] item in tableArray)
  13.                 {
  14.                     if (selectColumn < item.Length)
  15.                         ag.Add(int.Parse(item[selectColumn]));
  16.                 }
  17.                 foreach (int ags in ag.Distinct())
  18.                 {
  19.                     richTextBox1.Text += ags + "\t\n";
  20.                 }
  21.             }
  22.         }

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


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

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

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

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

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

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