Arrays.sort (t [], Comporator <? Super T> C) метод используется для сортировки массивов объектов по пользовательским правилам.
Официальная документация Java только кратко описывает роль этого метода и не вводит ее подробно. Эта статья подробно проанализирует этот метод.
1. Простой пример
Метод использования видов очень прост и ясен. В следующем примере сначала определите компаратор, который сравнивает размер собаки, а затем передайте свой объект экземпляра в качестве параметра методу сортировки. В этом примере вы должны быть в состоянии быстро освоить использование Arrays.sort ().
Импорт java.util.arrays; import java.util.comparator; Class Dog {int size; public dog (int s) {size = s;}} class dogizecomparator реализует компаратор <gog> {@override public int compare (dog o1, dog o2) {return o1.size - o2.size; d1 = новая собака (2); собака D2 = новая собака (1); собака D3 = новая собака (3); собака [] dogarray = {d1, d2, d3}; printdogs (dogarray); arrays.sort (dogarray, new Dogsizecomparator (); printdogs (Dograray);} public void printdogs (dogs] dogs dogs); System.out.print (d.size + ""); System.out.println ();}}Вывод:
2 1 3 1 2 3
2. Используйте режим политики
Это идеальный и краткий пример схемы стратегии. Стоит отметить, почему стратегическая модель подходит для использования в этом сценарии.
Вообще говоря, шаблон политики позволяет выбирать различные алгоритмы при выполнении программы. Например, при сортировке проходят разные компараторы, и используются разные алгоритмы.
Согласно примеру выше, предположим, что вы хотите сортировать по весу собаки, вы можете создать новый компаратор для сортировки, как ниже:
Class Dog {int size; int Weew; Public Dog (int s, int w) {size = s; wews = w;}} класс DogizeComparator реализует компаратор <gog> {@переопределение public int compare (dog o1, dog o2) {return o1.size - o2. size;}} class sweencom publicator publicator <gog@@at at at at at at int int int int int int int int int int int int int int int int int int in int int in int publicator comparator int. O1.weight - o2.weight;}} открытый класс Arraysort {public static void main (string [] args) {dog d1 = новая собака (2, 50); собака D2 = новая собака (1, 30); собака d3 = новая собака (3, 40); собака [] dograray = {d1, d2, d3}; printdogs (dogarray); Dogsizecomparator ()); Printdogs (Dogarray); Arrays.sort (Dogarray, New Dogweencecomparator ()); Printdogs (Dogarray);} public static void printdogs (собаки [] собаки) {для (собака D: собаки) System.out.print ("size =" + d.size + "Вес =" + d. -веса + "Веса +". "); System.out.println ();}}Результаты исполнения:
размер = 2 вес = 50 размер = 1 вес = 30 размер = 3 вес = 40 размер = 1 вес = 30 размер = 2 вес = 50 размер = 3 вес = 40 размер = 1 вес = 30 размер = 3 вес = 40 размер = 2 вес = 50
Кораптор - это интерфейс, поэтому метод сортировки может пройти в любом классе, который реализует этот интерфейс, который является основной идеей шаблона политики.
3. Зачем использовать "Супер"
Легко понять, если вы используете «компаратор <t> c», но <? Supert> во втором параметре означает, что тип, принятый компаратором, может быть T или его Superclass. Почему это суперкласс? Ответ: это позволяет сравнивать различные объекты подкласса, используя один и тот же компаратор. Это четко продемонстрировано в следующем примере:
Импорт java.util.arrays; import java.util.comparator; Class Animal {int size;} Class Dog расширяет Animal {public Dog (int s) {size = s;}} класс Cat Extens Animal {public Cat (int s) {size = s;} класс животный. o2.size;} // Таким образом, все подзывники животного могут использовать этот компаратор.} Общедоступный класс Arraysort {public static void main (string [] args) {dog d1 = новая собака (2); собака D2 = новая собака (1); Dog d3 = new Dog (3); Dog [] Dogarray = {d1, d2, d3}; new AnimalizeComparator ()); PrintDogs (DogarRay); System.out.println (); // Когда у вас есть массив кошки, можно использовать тот же компаратор. Cat C1 = новая кошка (2); кошка C2 = новая кошка (1); кошка C3 = новая кошка (3); cat [] catarray = {c1, c2, c3}; printdogs (catarray); Arrays.sort (catarray, new Animalizecomparator (); printdogs (catarray); System.out.print ("size =" + a.size + ""); System.out.println ();}}Результат вывода:
размер = 2 размер = 1 размер = 3 размер = 1 размер = 2 размер = 3 размер = 3 размер = 2 размер = 1 размер = 3 размер = 1 размер = 2 размер = 3
4. Резюме
Информация, связанная с Arrays.sort (), суммируется следующим образом:
Общий: Super Class Strategy Pattern;
Сорт -сортировка: сложность времени n*log (n);
Java.util.collections#sort (list <t> list, компаратор <? Super t> c) использует аналогичную идею с Arrays.sort.
Суммировать
Выше всего подробное объяснение кода Arrays.sort () в Java. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие темы, связанные с Java на этом веб-сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!