Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка коллекции 
V
    Опции темы
catlion
Дата 24.7.2006, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 20.2.2006
Где: Москва

Репутация: нет
Всего: 2



Здравствуйте. Есть коллекция key(string),value(int) можно ли ее отсортировать по значению? Насколько я понял, сортировку поддерживает только ArrayList, а SortedList сортирует по ключу. У меня же числовые значения повторяются, потому ключами быть не могут... 
PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 24.7.2006, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



catlion, а что потом с отсортированной коллекцией делать?
Можно передать коллекцию значений в массив, а там отсортировать, например. 
PM MAIL WWW ICQ   Вверх
catlion
Дата 24.7.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 20.2.2006
Где: Москва

Репутация: нет
Всего: 2



Требуется именно коллекция, отсортированная по значению. Если я передам "коллекцию значений" в массив, то как потом я отсортирую "коллекцию ключей" в соответствии с их значениями? ;) 
PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 24.7.2006, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Ну начнем с того, что коллекции почуму-то в .Net не сортируются. 
Наверное потому, что коллескция -- это просто набор данных. Порядок не важен.
Цитата(catlion @  24.7.2006,  16:12 Найти цитируемый пост)
отсортирую "коллекцию ключей"

А зачем сортировать коллекцию ключей? smile 
Ключ на то и ключ, что только по нему (не глядя на другие значения) находится нужный элемент.
Цитата(ivashkanet @  24.7.2006,  15:59 Найти цитируемый пост)
catlion, а что потом с отсортированной коллекцией делать?

Задачу в студию
Что потом можно делать с отсортированной по значению ХэшТаблицей я не представляю 
PM MAIL WWW ICQ   Вверх
catlion
Дата 24.7.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 20.2.2006
Где: Москва

Репутация: нет
Всего: 2



Цитата(ivashkanet @  24.7.2006,  17:21 Найти цитируемый пост)
А зачем сортировать коллекцию ключей?

я имел ввиду расстановку ключей в соответствии с отсортированным списком значений, помоему это логично.

Цитата(ivashkanet @  24.7.2006,  17:21 Найти цитируемый пост)
Задачу в студию
Что потом можно делать с отсортированной по значению ХэшТаблицей я не представляю  

Гм. Примерно так: поиск по полю ntext в базе с помощью регулярных выражений, с последующей сортировкой результатов по количеству совпадений в каждой записи базы. По-моему, не стоит сейчас разбирать всю задачу. Возьмем попроще:

Есть список ученик-оценка. Список надо отсортировать по успеваемости. Чем не задача?  

Это сообщение отредактировал(а) catlion - 24.7.2006, 16:30
PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 24.7.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(catlion @  24.7.2006,  16:29 Найти цитируемый пост)
Список надо отсортировать по успеваемости.

Отсортировать и вывести?
Ну так пожалуйста:
Цитата(ivashkanet @  24.7.2006,  15:59 Найти цитируемый пост)
Можно передать коллекцию значений в массив, а там отсортировать 

Код
            Dictionary<string, int> reportCard = new Dictionary<string, int>();
            reportCard["Иванов"] = 5;
            reportCard["Петров"] = 10;
            reportCard["Сидоров"] = 1;
            int[] sortedMarks=new int[reportCard.Count];
            reportCard.Values.CopyTo(sortedMarks, 0);
            Array.Sort(sortedMarks);

 
PM MAIL WWW ICQ   Вверх
catlion
Дата 24.7.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 20.2.2006
Где: Москва

Репутация: нет
Всего: 2



Я извиняюсь, но это вроде бы отсортированный список оценок? А как узнать, чьи это оценки? 
PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 24.7.2006, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(catlion @  24.7.2006,  17:15 Найти цитируемый пост)
 А как узнать, чьи это оценки? 

Да, туплю  smile 
Извини
Сча подумаю 
PM MAIL WWW ICQ   Вверх
catlion
Дата 24.7.2006, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 20.2.2006
Где: Москва

Репутация: нет
Всего: 2



ivashkanet, спасибо и на этом.
перерыл все виды коллекций в .NET2, похоже, решать надо проблему с другого бока. Пойду в форум asp.net.

ЗЫ. Может, есть коллекции, допускающие дублирующиеся ключи?  smile   

Это сообщение отредактировал(а) catlion - 24.7.2006, 17:27
PM MAIL WWW ICQ   Вверх
Bogdan1024
Дата 24.7.2006, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 5
Всего: 13



У меня была похожая проблема (если я правильно понял твою проблему). 
Делаешь класс вроде этого
class c : IComparable{
int key;
int value;
...
}
реализуешь CompareTo так, чтобы можно было задавать по какому полю сортировать. Потом создаёшь массив типа этого класса и сортируешь обычным
 Array.Sort() 


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1380 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.