Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
18 / 5 / 2
Регистрация: 24.10.2018
Сообщений: 132

Отсортировать ArrayList с помощью IComparable

06.02.2020, 15:37. Показов 892. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 static void Main(string[] args)
        {
            string line;
            ArrayList myAL = new ArrayList();
            System.IO.StreamReader file = new System.IO.StreamReader(@"D:\Lab17.2\input.txt");
 
            Tovar m = new Tovar();
            while ((line = file.ReadLine()) != null)
            {                
                string[] t = line.Split(',');
                m.vide = t[0];
                m.st = Convert.ToInt32(t[1]);
                m.sort = t[2];
                m.kol = Convert.ToInt32(t[3]);
                myAL.Add(m);                
 
            }
 
            myAL.Sort();
 
            foreach (Tovar u in myAL)
            {
                Console.WriteLine(u.ToString()); 
            }
 
           
           
        }        
        struct Tovar : IComparable
        {
            public string vide { get; set; }
            public int st { get; set; }
            public string sort { get; set; }
            public int kol { get; set; }
           
 
            public int CompareTo(object obj)
            {
                return kol.CompareTo(obj);
            }
 
            public override string ToString()
            {
                return string.Format($"{vide}, {st}, {sort}, {kol}");
            }
 
            
 
 
        }
    }
Помогите отсортировать ArrayList по количеству(kol),с помощью IComparable,помогите,не работает,выдает ошибку в Sort()
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.02.2020, 15:37
Ответы с готовыми решениями:

IComparable, ArrayList.Sort
При вызове Sort вылетает ошибка "Дополнительные сведения: Сбой при сравнении двух элементов массива.". Не могли бы вы объяснить, в чем...

Верно ли, что ArrayList не реализует IComparable<T>?
Доброго времени суток, уважаемые форумчане. Сегодня писал небольшую учебную программу. В ней реализовывал интерфейс...

Как отсортировать список через IComparable<>?
Всем привет, совсем недавно начал программировать, нужно отсортировать уже заполненные списки. Попробую объяснить структуру: Есть список...

11
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
06.02.2020, 16:09
C#
1
2
3
4
5
6
7
8
public int CompareTo(object obj)
{
   var other = obj as Tovar;
   if (other == null)
      throw new InvalidOperationException("Can only compare Tovar with Tovar");
  
   return kol.CompareTo(other.kol);
}
0
18 / 5 / 2
Регистрация: 24.10.2018
Сообщений: 132
06.02.2020, 16:11  [ТС]
kolorotur, Ругается на 3 строчку
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
06.02.2020, 16:14
Цитата Сообщение от Angelosus Посмотреть сообщение
Ругается на 3 строчку
Чего говорит-то?

Добавлено через 1 минуту
А, у вас структура — не заметил.

C#
1
2
3
4
5
6
7
8
public int CompareTo(object obj)
{
   if (!(obj is Tovar))
      throw new InvalidOperationException("Can only compare Tovar with Tovar");
 
   var other = (Tovar)obj;
   return kol.CompareTo(other.kol);
}
1
18 / 5 / 2
Регистрация: 24.10.2018
Сообщений: 132
06.02.2020, 16:17  [ТС]
kolorotur, "Оператор as должен использоваться с ссылочным типом или с типом, допускающим значение NULL"

Добавлено через 1 минуту
kolorotur, Спасибо,работает)
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
06.02.2020, 16:18
Angelosus, без мучений сделайте
C#
1
struct Tovar : IComparable<Tovar>
Будет всё намного проще при решении задачи.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
06.02.2020, 16:25
Цитата Сообщение от amr-now Посмотреть сообщение
без мучений сделайте
Там тогда придется ArrayList тоже на что-то человеческое менять.
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
06.02.2020, 16:28
kolorotur, там скорее всего опечатка была ))))
List<Tovar> подразумевалось )))

Добавлено через 1 минуту
----
Честно говоря, не могу представить, что специально дали задачу по небобщенным коллекциям. Какой-то ну очень устаревший курс...
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
06.02.2020, 16:30
Цитата Сообщение от amr-now Посмотреть сообщение
не могу представить, что специально дали задачу по небобщенным коллекциям
Наверное до динамических коллекций дошли, а обобщения еще не проходили.
0
18 / 5 / 2
Регистрация: 24.10.2018
Сообщений: 132
06.02.2020, 16:42  [ТС]
amr-now, я бы с радостью,но в задании сказано "используя ArrayList",я вообще не знал об его существовании до этого задания,и не был удивлен,что он не в genetic, + в задании сделать не класс,а структуру.Ну тут как бы да.Короче тупил над этим заданием жестко
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16123 / 11247 / 2888
Регистрация: 21.04.2018
Сообщений: 33,071
Записей в блоге: 2
06.02.2020, 18:53
Цитата Сообщение от kolorotur Посмотреть сообщение
А, у вас структура — не заметил.
Может так лучше?
C#
1
2
3
4
5
6
7
8
public int CompareTo(object obj)
{
   if (!(obj is Tovar other))
      throw new InvalidOperationException("Can only compare Tovar with Tovar");
 
 //  var other = (Tovar)obj;
   return kol.CompareTo(other.kol);
}
Добавлено через 5 минут
Angelosus
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    struct Tovar : IComparable, IComparable<Tovar>
    {
        public string vide { get; set; }
        public int st { get; set; }
        public string sort { get; set; }
        public int kol { get; set; }
 
 
        public int CompareTo(object obj)
        {
            if (!(obj is Tovar other))
                throw new InvalidOperationException("Can only compare Tovar with Tovar");
 
            return CompareTo(other);
        }
 
        public int CompareTo(Tovar other)
            => kol.CompareTo(other.kol);
 
        public override string ToString() 
            => string.Format($"{vide}, {st}, {sort}, {kol}");
 
    }
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
06.02.2020, 18:56
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Может так лучше?
Я специально не стал так делать, чтобы лишние вопросы не плодить.
Раз уж им задания дают с ArrayList и IComparable, то я не удивлюсь если они до сих пор на 2005-й студии работают.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.02.2020, 18:56
Помогаю со студенческими работами здесь

Отсортировать данные по фамилии и вывести их хоть куда-то (использовать IComparable)
Дело такое: есть класс, при помощи которого записываются данные в массив методом (свойством) input. Необходимо по нажатию на кнопку 3...

Отсортировать arrayList
Есть ArrayList вот таких объектов: class Channel { int id = 0; String title = &quot;&quot;; String permalink = &quot;&quot;;...

Отсортировать коллекцию ArrayList
Есть коллекция ArrayList состоящая из разных дочерних объектов, необходимо отсортировать по критериям дочернего класса, подскажите алгоритм?

ArrayList отсортировать по одному из полей
как мне отсортировать Список journal по именам по алфавиту? namespace ClassJournal { class Program { static...

ArrayList отсортировать по двум полям
Есть ArrayList обьектов, надо отсортировать по двум полям, сначала по дате а потом по времени и вывести все в порядке возрастания даты и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru