Вот пример того, как сортировать фабрики по стоимости их времени.
List<Factory> sortedFactories = factories.stream().sorted((first, second) -> {
final long time1 = first.getTime();
final long time2 = second.getTime();
return time1-time2;
}).collect(Collectors.toList());
Как это работает:
В первой строке ваши фабрики theList преобразуются в класс потока java8.
После этого вы запускаете алгоритм сортировки (с методом сортировки ((первый, второй) -> [...]);
Алгоритм сортировки java8 работает так:
Алгоритм вызывает ваш компаратор (здесь компаратором является выражение lamba (первое, второе) -> {...});
И ваш компаратор должен вернуть:
A negative integer, zero, or a positive integer as the
first argument is less than, equal to, or greater than the
second.
И ваш список отсортирован по волшебству: D
И, наконец, вы преобразуете Stream в список с помощью .collect (Collectors.toList ());
Я надеюсь, что помогу вам.