Я пишу некоторые пользовательские компараторы, и я бы хотел, чтобы они нажимали нулевые элементы в нижней части списка, независимо от того, сортирую ли я сортировку по возрастанию или по убыванию. Какая хорошая стратегия или образец для этого?Хороший общий способ сортировки нулей на дно, независимо?
Навскидку:
- Просто напишите отдельные восходящие и убыванию компараторов, разделяя код , где это возможно
- Делегат обращение нуль другому класса, либо путем выбрасывания NPE или , называя его явно
- Включите восходящий флаг и поставьте условную логику в нем для навигации вокруг нулей
- Wrap регулярные компараторов в классе нуль-обработки
Любые другие стратегии? Я хотел бы услышать о любых опытах с различными подходами и о любых подводных камнях для различных стратегий.
Я согласен со всем вашим ответом, кроме как отрицать результат сравнения; Я был бы довольно недоволен, если бы узнал, что компаратор реализует целочисленное сравнение с использованием вычитания, так как этот метод имеет так много подводных камней. – jprete
@jprete: Я думаю, вы меня неправильно поняли. Я отредактирую. –
Я принимаю этот ответ из-за ссылки на класс заказов Google Collections - существующий проверенный код - лучшее решение. Также для предупреждения о Integer.MIN_VALUE. Но я очень ценю код @ dfa, ниже, и хочу, чтобы я мог принять оба ответа. –