Використання Java Arrays.sort () для будь-якого списку об’єктів

Сортування може бути складним, особливо коли ваш список не є примітивним числовим типом Java (Byte, Integer, Short, Long, Double, Float). Зараз усі ситуації будуть різними, тому цей метод може бути не найкращим. Однак я знайшов це неймовірно корисним для простих завдань кодування та завдань університетської лабораторії.

Для початку виберіть свій список. У цьому прикладі я буду використовувати список Edgesіз простої Graphструктури даних:

// Very simple Edge classpublic class Edge { public Vertex src; public Vertex dst; public double cost; // creates an edge between two vertices Edge(Vertex s, Vertex d, double c) { src = s; dst = d; cost = c; }}
// List of edgesEdge[] edges = graph.getEdges();

Далі визначте реалізацію java.util.Comparatorінтерфейсу:

class SortByCost implements Comparator { public int compare(Edge a, Edge b) { if ( a.cost < b.cost ) return -1; else if ( a.cost == b.cost ) return 0; else return 1; }}

У цьому прикладі ми будемо сортувати edgesза їх вартістю або відстанню від srcвершини (джерела) до вершини dst(пункту призначення).

Нарешті, використовуйте стандартний java.util.Arrays.sort()метод:

Arrays.sort(edges, new SortByCost())

І саме так, список Edgesтепер відсортовано за зростанням (від найменшого до найбільшого).

Якщо у вас виникли запитання, не соромтеся звертатися до Twitter

Ви також можете знайти мене на GitHub або на моєму особистому веб-сайті

~ Щасливого кодування

- Ітан Арровуд