Удаление повторяющихся элементов в ArrayList - C# (184301)
Формулировка задачи:
Есть метод в котором открывается файл и далее происходит запись столбцов (но это не важно)
Далее происходит передача в другой ArrayList для отрисовки по выбору столбца гистограммы
Проблема заключается в том что мне необходимо из полученного столбца чисел от item[selectColumn] удалить все не повторяющиеся числа, что я и попытался реализовать через
Листинг программы
- public ArrayList getTableArray()
- {
- ArrayList tmpTableArray = new ArrayList(); //Таблица со значениями
- countColumn = 0;
- OpenFileDialog ofd = new OpenFileDialog();
- ofd.Filter = "Text files (*.txt, *.log)|*.txt;*.log|All files (*.*)|*.*";
- try
- {
- path = @"C:\Users\Nikita\Desktop\SuperProg\20150115_124458_BaF2_1850V_25mV_2us_tyv_6db_Cs137_PED.txt"; //Путь
- StreamReader sr = new StreamReader(path);
- // По строчное чтение
- while (!sr.EndOfStream)
- {
- string[] tmp = sr.ReadLine().Split(' ');
- if (countColumn < tmp.Length) countColumn = tmp.Length; //Ищем строку с наибольшем колличеством столбцов
- tmpTableArray.Add(tmp);
- }
- sr.Close();
- return tmpTableArray;
- }
- catch
- {
- throw;
- }
Листинг программы
- private void panel1_Paint(object sender, PaintEventArgs e)
- {
- Graphics gr = this.CreateGraphics();
- gr = panel1.CreateGraphics();
- ArrayList tableArray; //Таблица со значениями
- tableArray = getTableArray(); //Таблица со значениями
- int tmp_i = 0;
- if (comboBox1.SelectedItem != null && comboBox1.SelectedItem.ToString() != "")
- {
- richTextBox1.Clear();
- selectColumn = int.Parse(comboBox1.SelectedItem.ToString()) - 1; //Выбранный столбец (канал)
- foreach (string[] item in tableArray)
- {
- if (comboBox1.SelectedItem.ToString() == null) break;
- if (selectColumn+1 > item.Length) break;
- //gr.DrawLine(new Pen(Color.Black), tmp_i + 16, 550, tmp_i + 16, int.Parse(item[selectColumn]));
- //textBox1.Text += item[selectColumn];
- tmp_i++;
- //richTextBox1.Text += mas;
- List<int> ag = new List<int> { int.Parse(item[selectColumn]) };
- ag = ag.Distinct().ToList();
- IEnumerable<int> disting = ag.Distinct();
- foreach(int ags in disting)
- {
- richTextBox1.Text += ags + "\t\n";
- }
- }
- }
- }
Distinct
но по моему говнокоду мне выводятся теже самые числа, без обработкиРешение задачи: «Удаление повторяющихся элементов в ArrayList»
textual
Листинг программы
- private void panel1_Paint(object sender, PaintEventArgs e)
- {
- Graphics gr = e.Graphics;
- ArrayList tableArray = getTableArray(); //Таблица со значениями
- if (comboBox1.SelectedItem != null && comboBox1.SelectedItem.ToString() != "")
- {
- richTextBox1.Clear();
- selectColumn = int.Parse(comboBox1.SelectedItem.ToString()) - 1; //Выбранный столбец (канал)
- List<int> ag = new List<int>(tableArray.Count);
- foreach (string[] item in tableArray)
- {
- if (selectColumn < item.Length)
- ag.Add(int.Parse(item[selectColumn]));
- }
- foreach (int ags in ag.Distinct())
- {
- richTextBox1.Text += ags + "\t\n";
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д