我試圖執行自定義排序的日曆對象(從節點類中提取),遇到的任何空值都會推到最後。如果比較器遇到空值,則不會進行排序
這是我的代碼:
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塊的情況下編寫它。
編輯:在日誌中我看到,它拋出一個javax.jcr.PathNotFoundException
_where this fail_incail是什麼? – gonzo
它不排序。在排序操作之前和之後,感興趣的列表數組保持不變。 –
請發佈stacktrace。 – d33t