Я пытаюсь выполнить собственный тип объектов календаря (извлеченных из класса Node) с любыми найденными нулями, которые были перенесены в конец при сортировке.Компаратор не сортирует, если он встречает нуль
Это мой код:
public class CustomComparatorPubDate implements Comparator<Node> {
@Override
public int compare(Node o1, Node o2) {
try {
Calendar d1 = o1.getProperty("jcr:content/metadata/jcr:pubdate").getDate();
Calendar d2 = o2.getProperty("jcr:content/metadata/jcr:pubdate").getDate();
LOGGER.debug("d1: " + d1);
LOGGER.debug("d2: " + d2);
if (d2 == null && d1 == null) return 0;
if (d1 == null) return 1;
if (d2 == null) return -1;
int compar = d1.compareTo(d2);
LOGGER.debug("compar: " + compar);
return compar;
} catch (RepositoryException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
}
}
}
Мой призыв к выше класса:
Collections.sort(listofnodes, new CustomComparatorPubDate());
У меня есть тестовый массив, в котором один из свойства объекта намеренно левый нуль для тестирования, где это выходит из строя. Если я заполню это свойство, он, похоже, работает нормально.
Любая идея, что не так и как это решить?
P.S: Eclipse не позволит мне написать это без блока try/catch.
Edit: В журналах я вижу, что он бросает javax.jcr.PathNotFoundException
Что происходит в этом случае? – gonzo
Это не сортировка. Список-массив интересов не изменяется до и после операции сортировки. –
Пожалуйста, разместите stacktrace. – d33t