Удаление повторяющихся элементов в 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"; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д