Сортування може бути складним, особливо коли ваш список не є примітивним числовим типом 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 або на моєму особистому веб-сайті
~ Щасливого кодування
- Ітан Арровуд