Сортировка может быть сложной, особенно если ваш список не относится к примитивному числовому типу Java (Byte, Integer, Short, Long, Double, Float). Теперь все ситуации будут отличаться, поэтому этот метод может быть не лучшим вариантом. Однако я нашел его невероятно полезным для простых задач по программированию и выполнения университетских лабораторных работ.
Для начала выберите свой список. В этом примере я буду использовать список Edges
из простой Graph
структуры данных:
// Very simple Edge class public 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 edges Edge[] edges = graph.getEdges();
Затем определите реализацию интерфейса java.util.Comparator
:
class SortByCost implements Comparator<Edge> { 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())
И точно так же список of Edges
теперь отсортирован в порядке возрастания (от наименьшего к наибольшему).
Если у вас есть вопросы, напишите в Twitter.
Вы также можете найти меня на GitHub или на моем личном сайте.
~ Счастливое кодирование
- Итан Эрровуд