Сортировка может быть сложной, особенно если ваш список не относится к примитивному числовому типу 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 или на моем личном сайте.

~ Счастливое кодирование

- Итан Эрровуд