Сортировка может оказаться непростой задачей, особенно если ваш список List содержит не примитивные числовые типы данных, а их объектные «обёртки» (Byte, Integer, Short, Long, Double, Float). Предлагаю воспользоваться методом, который может быть весьма полезным для решения простых задач или ответа на вопрос интервьюера. Использование Java Arrays.sort() для любого списка объектов  - 1Для начала выберем, чем будем заполнять наш List. В этом примере я буду использовать список рёбер графа (Edges) из простой структуры данных Graph:
// Очень простой класс Edge (рёбро графа)
public class Edge {
    public Vertex src;
    public Vertex dst;
    public double cost;

    // создание ребра между двух вершин
    Edge(Vertex s, Vertex d, double c) {
        src = s;
        dst = d;
        cost = c;
    }
}
// Список рёбер
Edge[] edges = graph.getEdges();

Что такое граф?

В дискретной математике граф определяют как пару множеств (V,E), где V — подмножество произвольного счётного множества, а E — подмножество (VхV).

Вероятно, тем, кто не привык к математическим абстракциям, такое определение будет не очень понятно, поэтому скажем проще:

граф — это совокупность вершин и рёбер, их соединяющих. Хороший пример графа, который сразу перенесёт его из области абстракции в сферу материального — карта железнодорожных путей.

Вершины такого графа — станции. Ну а пути между ними — рёбра.

Затем определим реализацию интерфейса 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;
    }
}
В этом примере мы будем сортировать ребра графа по их весу или по расстоянию от вершины src (source) до вершины dst (destination). Наконец, используем стандартный метод java.util.Arrays.sort ():
Arrays.sort(edges, new SortByCost())
Теперь наш лист, заполненный объектами Edges отсортирован в порядке возрастания (от наименьшего к наибольшему). Автор решения — Этан Эрровуд (Ethan Arrowood).
Что еще почитать?

Хитрые вопросы по Java, которые часто задают на собеседованиях

Как в Java напечатать числа от 1 до 100 без циклов и условий?