Как отсортировать ArrayList (int) - PullRequest
2 голосов
/ 14 июля 2011

Как мне отсортировать Arraylist в порядке возрастания и убывания.Пример.

ArrayList list= new ArrayList();
list.Add(2);
list.Add(8);
list.Add(0);
list.Add(1);

Как отсортировать приведенный выше список как по возрастанию, так и по убыванию?

Ответы [ 7 ]

2 голосов
/ 14 июля 2011

Вы можете использовать list.Sort() в порядке возрастания. Для нисходящего порядка необходимо изменить порядок, введя IComparer. Что-то вроде этого подойдет:

// calling normal sort:
ArrayList ascendingList = list.Sort();

// calling reverse sort:
ArrayList descendingList = list.Sort(new ReverseSort());

// implementation:
public class ReverseSort : IComparer
{
    public int Compare(object x, object y)
    {
        // reverse the arguments
        return Comparer.Default.Compare(y, x);
    }

}

Обратите внимание, что, как упоминает Джон Скит в ветке комментариев под основным вопросом, вам вообще не нужно использовать нетипизированный ArrayList. Вместо этого вы можете использовать универсальный List<T>, который безопасен для типов и просто более универсален.

1 голос
/ 14 июля 2011

Вы можете использовать Метод ArrayList.Sort

1 голос
/ 14 июля 2011

Вы можете использовать функцию list.Sort ().см. пример здесь http://msdn.microsoft.com/ru-ru/library/0e743hdt.aspx

1 голос
/ 14 июля 2011

ArrayList содержит метод Sort.(Отредактировано для удаления неверной информации .NET)

0 голосов
/ 28 октября 2013

В возрастающем списке вы можете использовать list.Sort ()

И для нисходящего списка есть простой способ сделать это!

Вы можете сделать нисходящие списки, как это:

list.Sort();
list.Reverse();
0 голосов
/ 14 июля 2011

list.Sort () отсортирует их, но я бы предложил использовать List <> и Collections для сортировки. Избегайте использования ArrayList imo.

0 голосов
/ 14 июля 2011

Использование списка массивов вместо List<int> здесь опасно, однако вот что вы ищете:

System.Collections.ArrayList al = new System.Collections.ArrayList();
al.Add(5);
al.Add(3);
al.Add(1);
al.Add(4);
al.Add(0);
al.Sort();

foreach (var x in al)
{
    Console.WriteLine(x.ToString());
}

al.Sort(new DescendingIntSorter());

foreach (var x in al)
{
    Console.WriteLine(x.ToString());
}



public class DescendingIntSorter : System.Collections.IComparer
{
    public int Compare(object x, object y)
    {
        return ((int)y).CompareTo((int)x);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...