Подтвердить что ты не робот

Коллекции против массивов относительно sort()

Коллекции против массивов относительно sort() В чем разница между этими двумя методами sort()? Я знаю, что сортировка массивов() использует двоичный поиск для sort(), а что же касается коллекций? И как выбрать, что использовать? Спасибо!

4b9b3361

Ответ 1

Ну, кроме того, что работает на разных вещах (Collections.sort работает на List, а Arrays.sort работает на массиве), java.util.Collections.sort() просто вызывает java.util.Arrays.sort(), чтобы сделать тяжелую работу.

Кроме того, для чего стоит заметить, что Arrays.sort запускает сортировку слияния.

Ответ 2

Я знаю, что сортировка массивов() использует двоичный файл поиск сортировки()

Нет, вы не знаете ничего подобного. Это не так. См. Javadoc.

Утверждение даже не имеет смысла. Вы не можете использовать двоичный поиск для сортировки. Двоичный поиск работал только тогда, когда данные уже отсортированы. Возможно, вы прочитали, что Arrays.binarySearch() предполагает сортировку данных.

Ответ 3

Collections.sort() работает в List Whereas Arrays.sort() работает в массиве.

Arrays.sort() использует Double-Pivot Quicksort для примитивных массивов и MergeSort для сортировки массива объектов.

Пример Collections.sort():

 ArrayList<Integer> arr = new ArrayList<Integer>();
 arr.add(15);
 arr.add(10);
 arr.add(5); 
 arr.add(2); 

 Collections.sort(arr);

Пример массива Array.sort():

int[] arr = new int[4]
 arr[0]=15;
 arr[1]=10;
 arr[2]=5; 
 arr[3]=2; 

 Arrays.sort(arr);

Ответ 4

Используйте Arrays.sort(), если вы имеете дело с массивом. Используйте Collections.sort(), если вы имеете дело с чем-то, что реализует интерфейс Collection (например, ArrayList).

Ответ 5

Как говорили другие ответы, вы должны использовать Collections.sort() при работе с объектом, который реализует интерфейс Collection и метод Arrays.sort() при работе с массивом.

Связанный вопрос - какой тип структур данных лучше, если вы хотите отсортировать набор значений. Если вам нужно использовать List, я бы предложил использовать LinkedList, поскольку вставки выполняются в O (1), где нечто вроде ArrayList будет O (n).

Вы также можете выбрать использование SortedSet, если не будет дубликатов или дубликатов нежелательных. Таким образом, вам не нужно беспокоиться об использовании внешнего метода сортировки.

Ответ 6

Collection.sort используется, когда вы имеете дело со списками и массивами. Сорт применяется при работе с массивами. Но внутренне Collection.sort использует только метод Arrays.sort. Теперь внутренняя сортировка выполняется на основе технологии Timosrt вместо сортировки слияния, потому что стабильные адаптивные массивы берут O (nlogn) сравнения в сортировке Merge, но в худшем случае Timsort это займет O (nlogn), а в худшем случае - n/2. Timsort, но это не относится к методу сортировки Merge.

Ответ 7

Разница между Arrays.sort() и Collections.sort()

Arrays.sort(): Arrays.sort() - это метод, находящийся в классе Arrays. Используется для сортировки переданного массива. Это может быть целочисленный массив, массив с плавающей точкой, массив строк, массив объектов и т.д.

Сложность по времени для этого метода составляет O (nlogn), поскольку он выполняет быструю сортировку в фоновом режиме

Метод sort() лучше всего оптимизирован, поэтому, если вы будете использовать этот метод вместо написания собственного, вы получите лучшие результаты.

import java.util.Arrays;
public class JavaTest{
    public static void main(String[] args){
        String[] names = {"apples", "zen", "delhi"};
        Arrays.sort(names);
        for(String name: names)
            System.out.print(name+" ");
    }
}

//Output: 
//apple delhi zen

Arrays.sort() использует алгоритм быстрой сортировки Dual-Pivot для простых типов (int, String, double,...) и Mergesort для массива объектов. Collections.sort(): Collections.sort() используется для сортировки объекта, расширяющего интерфейс List. ArrayList и LinkedList расширяют интерфейс List, поэтому мы можем сортировать их с помощью Collections.sort.

Collections.sort() имеет временную сложность O (nlogn), так как он выполняет сортировку слиянием в фоновом режиме.

import java.util.*;
public class JavaTest{
    public static void main(String[] args){
        ArrayList<Integer> l = new ArrayList<>();
        l.add(15);
        l.add(2);
        l.add(43);
        l.add(0);

        Collections.sort(l);
        for(int i=0; i<l.size(); i++)
            System.out.print(l.get(i)+" ");
    }
}

//Output
//0 2 15 43

Для получения дополнительной информации нажмите: https://www.solutionfactory.in/posts/Difference-between-Arrays-sort-and-Collections-sort