Oc-windows.ru

IT Новости из мира ПК
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Отсортировать arraylist java

Collections.sort () в Java с примерами

Метод java.util.Collections.sort () присутствует в классе java.util.Collections. Используется для сортировки элементов, присутствующих в указанном списке коллекции, в порядке возрастания.
Он работает аналогично методу java.util.Arrays.sort (), но это лучше, так как он может сортировать элементы массива, а также связанный список, очередь и многое другое, присутствующее в нем.

Сортировка ArrayList в порядке возрастания

// Java-программа для демонстрации работы Collections.sort ()

public class Collectionsorting

public static void main(String[] args)

// Создаем список строк

ArrayList al = new ArrayList ();

al.add( «Geeks For Geeks» );

/ * Метод Collections.sort сортирует

элементы ArrayList в порядке возрастания. * /

// Давайте распечатать отсортированный список

System.out.println( «List after the use of» +

» Collection.sort() :n» + al);

Сортировка ArrayList в порядке убывания

// Java-программа для демонстрации работы Collections.sort ()
// в порядке убывания.

public class Collectionsorting

public static void main(String[] args)

// Создаем список строк

ArrayList al = new ArrayList ();

al.add( «Geeks For Geeks» );

/ * Метод Collections.sort сортирует

элементы ArrayList в порядке возрастания. * /

// Давайте распечатать отсортированный список

System.out.println( «List after the use of» +

» Collection.sort() :n» + al);

Сортировка ArrayList в соответствии с заданными пользователем критериями.
Мы можем использовать интерфейс Comparator для этой цели.

// Java-программа для демонстрации работы Comparator
// интерфейс и Collections.sort () для сортировки в соответствии
// по заданным пользователем критериям.

// Класс для представления студента.

String name, address;

public Student( int rollno, String name,

this .rollno = rollno;

this .name = name;

this .address = address;

// Используется для печати сведений о студенте в main ()

public String toString()

return this .rollno + » » + this .name +

class Sortbyroll implements Comparator

// Используется для сортировки в порядке возрастания

public int compare(Student a, Student b)

return a.rollno — b.rollno;

public static void main (String[] args)

ArrayList ar = new ArrayList ();

ar.add( new Student( 111 , «bbbb» , «london» ));

ar.add( new Student( 131 , «aaaa» , «nyc» ));

ar.add( new Student( 121 , «cccc» , «jaipur» ));

for ( int i= 0 ; i

Collections.sort(ar, new Sortbyroll());

System.out.println( «nSorted by rollno» );

for ( int i= 0 ; i

Arrays.sort () против Collections.sort ()
Arrays.sort работает для массивов, которые также могут быть примитивного типа данных. Коллекции .sort () работает для объектов Коллекции, такие как ArrayList , LinkedList и т. Д.

Мы можем использовать Collections.sort () для сортировки массива после создания ArrayList заданных элементов массива.

// Использование Collections.sort () для сортировки массива

public class Collectionsort

public static void main(String[] args)

// создаем массив строковых объектов

// Здесь мы создаем список с именем Collist

// здесь используется метод Collection.sort ()

// сортировать элементы списка.

// Давайте распечатать отсортированный список

How to sort an ArrayList?

I have a List of doubles in java and I want to sort ArrayList in descending order.

Input ArrayList is as below:

The out put should be like this

18 Answers 18

That will do what you want. Remember to import Collections though!

Use util method of java.util.Collections class, i.e

In fact, if you want to sort custom object you can use

see collections api

For your example, this will do the magic in Java 8

Читать еще:  Java округление double до двух знаков

But if you want to sort by some of the fields of the object you are sorting, you can do it easily by:

Using lambdas (Java8), and stripping it down to the barest of syntax (the JVM will infer plenty in this case), you get:

A more verbose version:

The use of a lambda is possible because the Comparator interface has only a single method to implement, so the VM can infer which method is implementing. Since the types of the params can be inferred, they don’t need to be stated (i.e. (a, b) instead of (Double a, Double b) . And since the lambda body has only a single line, and the method is expected to return a value, the return is inferred and the braces aren’t necessary.

With Java8 there is a default sort method on the List interface that will allow you to sort the collection if you provide a Comparator. You can easily sort the example in the question as follows:

Note: the args in the lambda are swapped when passed in to Double.compare to ensure the sort is descending

You can use Collections.sort(list) to sort list if your list contains Comparable elements. Otherwise I would recommend you to implement that interface like here:

and of course provide your own realization of compareTo method like here:

And then you can again use Colection.sort(list) as now list contains objects of Comparable type and can be sorted. Order depends on compareTo method. Check this https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html for more detailed information.

Collections.sort allows you to pass an instance of a Comparator which defines the sorting logic. So instead of sorting the list in natural order and then reversing it, one can simply pass Collections.reverseOrder() to sort in order to sort the list in reverse order:

As mentioned by @Marco13, apart from being more idiomatic (and possibly more efficient), using the reverse order comparator makes sure that the sort is stable (meaning that the order of elements will not be changed when they are equal according to the comparator, whereas reversing will change the order)

if you are using Java SE 8, then this might be of help.

Array List. Sort Метод

Определение

Сортирует элементы в списке ArrayList или в его части. Sorts the elements in the ArrayList or a portion of it.

Перегрузки

Сортирует элементы во всем списке ArrayList. Sorts the elements in the entire ArrayList.

Сортирует элементы во всем списке ArrayList с помощью указанной функции сравнения. Sorts the elements in the entire ArrayList using the specified comparer.

Сортирует элементы в диапазоне элементов списка ArrayList с помощью указанной функции сравнения. Sorts the elements in a range of elements in ArrayList using the specified comparer.

Сортирует элементы во всем списке ArrayList. Sorts the elements in the entire ArrayList.

Исключения

Объект ArrayList доступен только для чтения. The ArrayList is read-only.

Примеры

В следующем примере кода показано, как сортировать значения в ArrayList. The following code example shows how to sort the values in an ArrayList.

Комментарии

Этот метод использует Array.Sort, который использует алгоритм QuickSort. This method uses Array.Sort, which uses the QuickSort algorithm. Алгоритм QuickSort — это сравнительная Сортировка (также называемая нестабильной сортировкой), которая означает, что из двух элементов, которые должны выполняться первыми в итоговом отсортированном списке, определяется операция сравнения «меньше или равно». The QuickSort algorithm is a comparison sort (also called an unstable sort), which means that a «less than or equal to» comparison operation determines which of two elements should occur first in the final sorted list. Однако если два элемента равны, их исходный порядок может не сохраняться. However, if two elements are equal, their original order might not be preserved. В отличие от этого, стабильная сортировка сохраняет порядок элементов, равных. In contrast, a stable sort preserves the order of elements that are equal. Чтобы выполнить стабильную сортировку, необходимо реализовать пользовательский интерфейс IComparer для использования с другими перегрузками этого метода. To perform a stable sort, you must implement a custom IComparer interface to use with the other overloads of this method.

Читать еще:  Переопределение tostring java

В среднем этот метод является операцией O(n log n) , где n Count; в худшем случае это операция O(n^2) . On average, this method is an O(n log n) operation, where n is Count; in the worst case it is an O(n^2) operation.

Дополнительно

Sort(IComparer)

Сортирует элементы во всем списке ArrayList с помощью указанной функции сравнения. Sorts the elements in the entire ArrayList using the specified comparer.

Параметры

Реализация интерфейса IComparer, которая используется при сравнении элементов. The IComparer implementation to use when comparing elements.

-или- -or- Пустая ссылка ( Nothing в Visual Basic) для использования реализации IComparable каждого элемента. A null reference ( Nothing in Visual Basic) to use the IComparable implementation of each element.

Исключения

Объект ArrayList доступен только для чтения. The ArrayList is read-only.

При сравнении двух элементов возникла ошибка. An error occurred while comparing two elements.

null передается для comparer , а элементы в списке не реализуют IComparable. null is passed for comparer , and the elements in the list do not implement IComparable.

Примеры

В следующем примере кода показано, как сортировать значения в ArrayList с помощью компаратора по умолчанию и пользовательского компаратора, который изменяет порядок сортировки на обратный. The following code example shows how to sort the values in an ArrayList using the default comparer and a custom comparer that reverses the sort order.

Комментарии

Используйте метод Sort для сортировки списка объектов с помощью пользовательского компаратора, реализующего интерфейс IComparer. Use the Sort method to sort a list of objects with a custom comparer that implements the IComparer interface. При передаче null для comparer этот метод использует реализацию IComparable каждого элемента. If you pass null for comparer , this method uses the IComparable implementation of each element. В этом случае необходимо убедиться, что объекты, содержащиеся в списке, реализуют интерфейс IComparer или если возникнет исключение. In this case, you must make sure that the objects contained in the list implement the IComparer interface or an exception will occur.

Кроме того, использование реализации IComparable означает, что список выполняет сортировку по сравнению (также называемую нестабильной сортировкой); то есть, если два элемента равны, их порядок может не сохраняться. In addition, using the IComparable implementation means the list performs a comparison sort (also called an unstable sort); that is, if two elements are equal, their order might not be preserved. В отличие от этого, стабильная сортировка сохраняет порядок элементов, равных. In contrast, a stable sort preserves the order of elements that are equal. Чтобы выполнить стабильную сортировку, необходимо реализовать пользовательский интерфейс IComparer. To perform a stable sort, you must implement a custom IComparer interface.

Читать еще:  Класс arraylist java

В среднем этот метод является операцией O(n log n) , где n Count; в худшем случае это операция O(n^2) . On average, this method is an O(n log n) operation, where n is Count; in the worst case it is an O(n^2) operation.

Дополнительно

Sort(Int32, Int32, IComparer)

Сортирует элементы в диапазоне элементов списка ArrayList с помощью указанной функции сравнения. Sorts the elements in a range of elements in ArrayList using the specified comparer.

Параметры

Индекс (с нуля) начала диапазона, который требуется отсортировать. The zero-based starting index of the range to sort.

Длина диапазона сортировки. The length of the range to sort.

Реализация интерфейса IComparer, которая используется при сравнении элементов. The IComparer implementation to use when comparing elements.

-или- -or- Пустая ссылка ( Nothing в Visual Basic) для использования реализации IComparable каждого элемента. A null reference ( Nothing in Visual Basic) to use the IComparable implementation of each element.

Исключения

Значение параметра index меньше нуля. index is less than zero.

-или- -or- Значение параметра count меньше нуля. count is less than zero.

index и count не указывают допустимый диапазон в ArrayList. index and count do not specify a valid range in the ArrayList.

Объект ArrayList доступен только для чтения. The ArrayList is read-only.

При сравнении двух элементов возникла ошибка. An error occurred while comparing two elements.

Примеры

В следующем примере кода показано, как сортировать значения в диапазоне элементов в ArrayList с помощью компаратора по умолчанию и пользовательского компаратора, который изменяет порядок сортировки на обратный. The following code example shows how to sort the values in a range of elements in an ArrayList using the default comparer and a custom comparer that reverses the sort order.

Комментарии

Если comparer имеет значение null , этот метод выполняет сортировку по сравнению (также называемую нестабильной сортировкой); то есть, если два элемента равны, их порядок может не сохраняться. If comparer is set to null , this method performs a comparison sort (also called an unstable sort); that is, if two elements are equal, their order might not be preserved. В отличие от этого, стабильная сортировка сохраняет порядок элементов, равных. In contrast, a stable sort preserves the order of elements that are equal. Чтобы выполнить стабильную сортировку, необходимо реализовать пользовательский интерфейс IComparer. To perform a stable sort, you must implement a custom IComparer interface.

В среднем этот метод является операцией O(n log n) , где n count ; в худшем случае это операция O(n^2) . On average, this method is an O(n log n) operation, where n is count ; in the worst case it is an O(n^2) operation.

Ссылка на основную публикацию
Adblock
detector