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

Поиск:

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


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Есть объект:

Dictionary<string, int> PlatformList = new Dictionary<string, int>();

Существуют ли стандартные средства для сортировки его по первому или второму параметру. Всё что мне надо, это подобие цикла foreach, но вызываться элементы коллекции должны в определённом порядке.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Katshooter
Дата 10.6.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 10.6.2007

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



я для сортировки своих классов, использовала IComparer и IComparable, там просто переопределяеш в них пару функций, и у тебя будет сортировать потом как хочеш(в фориче в том числе)))) 
PM MAIL   Вверх
Vit
Дата 10.6.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Цитата(Katshooter @  10.6.2007,  07:11 Найти цитируемый пост)
я для сортировки своих классов, использовала IComparer и IComparable, там просто переопределяеш в них пару функций, и у тебя будет сортировать потом как хочеш(в фориче в том числе))))  



Спасибо, а примерчик простейший можно?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
archeg
Дата 10.6.2007, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 11
Всего: 27



Есть SortedDictionary<K,T> который сразу сортирует по ключу


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
Vit
Дата 10.6.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Цитата(archeg @  10.6.2007,  07:18 Найти цитируемый пост)
Есть SortedDictionary<K,T> который сразу сортирует по ключу 



Спасибо!


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
uitl
Дата 11.4.2008, 03:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 12.3.2008

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



И все же, можно примерчик сортировки с использованием IComparer и IComparable для объекта 

Dictionary<string, int> PlatformList = new Dictionary<string, int>();

Просто необходимо потом еще отсортировать в обратном порядке..
Спасибо заранее..
PM MAIL   Вверх
mr.DUDA
Дата 11.4.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



С Dictionary использовать IComparer не получится, только с SortedDictionary. Также, сортировка происходит только при добавлении элементов. Пример:
Код
using System;
using System.Collections.Generic;

class MyComparer : IComparer<string>
{
    public bool IsReverseMode;

    public int Compare(string x, string y)
    {
        int ret = x.CompareTo(y);
        if (IsReverseMode)
            ret = -ret;
        return ret;
    }
}

class Program
{
    static void Main()
    {
        MyComparer comparer = new MyComparer();
        SortedDictionary<string, int> dic = new SortedDictionary<string, int>(comparer);

        comparer.IsReverseMode = true;

        dic["AAA"] = 1;
        dic["BBB"] = 1000;
        dic["CCC"] = 10;
        dic["DDD"] = -100;

        foreach (KeyValuePair<string, int> p in dic)
            Console.WriteLine(p.Key);
    }
}


Если нужна возможность пересортировать коллекцию, а скорость поиска не критична, могу посоветовать использовать List<KeyValuePair<string, int>> с похожей реализацией IComparer-а, пересортировку можно вызвать в любой момент (метод Sort).


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

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


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

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


 




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


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

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