Мне нужно отсортировать коллекцию с помощью различных атрибутов String, которые могут быть пустыми (""
) или даже null
. Оба значения допустимы и должны рассматриваться одинаково.Лучший способ создания сопоставителя для доступа к строковым полям, которые могут быть пустыми или нулевыми.
Я решил эту проблему с помощью метода, который проверяет каждую строку для null
и возвращает пустую строку, когда найдено null
.
Пока мой компаратор выглядит поясню, как этот
public class MyComparator implements Comparator<MyObject> {
@Override
public int compare(MyObject o1, MyObject o2) {
// ... some logical stuff like e.g.
return rein(o1.getSomeValue()).compareTo(rein(o2.getSomeValue());
}
private String rein(String str) {
return str == null ? "" : str;
}
}
Интересно, если эта конструкция считается нормально или если есть причина против этого? Если это не нормально, что еще я могу сделать для выполнения моих требований? Все эти (в большинстве случаев ненужные) функции вызовы выглядят уродливо для меня, поскольку мы говорим примерно о 1/1000 случаях. Поэтому мне интересно, есть ли более элегантное решение?
Спасибо за ваше мнение. Просто эти случаи действительно редки, поэтому я подумал, что может быть лучшее соло. Возможно, рискуя NPE и поймать его, чтобы выполнить другую логику, но злоупотреблять исключениями для процесса кажется мне некрасивым. – stg