我有一個對象和比較器的列表,用於在列表中進行排序和序列化。 Collections.binarySearch()返回null,它應該返回一個整數值。以下是代碼:Java Collections.binarySearch()返回null
List<AttribRow> rows = new ArrayList<AttribRow>();
AttribRow temp = new AttribRow();
temp.setIndv1((long)22);
rows.add(temp);
temp = new AttribRow();
temp.setIndv1((long)22);
rows.add(temp);
temp = new AttribRow();
temp.setIndv1((long)22);
rows.add(temp);
temp = new AttribRow();
temp.setIndv1((long)23);
rows.add(temp);
temp = new AttribRow();
temp.setIndv1((long)22);
rows.add(temp);
temp = new AttribRow();
temp.setIndv1((long)25);
temp.setId((long)55);
Collections.sort(rows, new CitRowsComparator());
int index = 0;
index = Collections.binarySearch(rows, temp,new CitRowsComparator());
AttribRow是映射到表的實體bean類。它有一個用於比較的字段indv1。
private Long indv1;
public Long getIndv1() {
return indv1;
}
public void setIndv1(Long indv1) {
this.indv1 = indv1;
}
這是Comporator類代碼
public class CitRowsComparator implements Comparator<AttribRow> {
public CitRowsComparator() {
super();
}
public int compare(AttribRow one, AttribRow two) {
return one.getIndv1().compareTo(two.getIndv1());
}
}
Collections.binarySearch()alsways返回null。即使當我在Comparator中更改compare()方法返回0時,它仍然返回null。在binarySearch envocation之後,用作鍵的對象溫度也爲空。我沒有任何預期。我嘗試了一個字段的其他類相同的代碼,它工作正常。 任何幫助將不勝感激。
哪有'binarySearch'回空當它不返回具有空值的類型?你怎麼知道'index'是空的而不是0? – 2011-02-23 07:46:39
此代碼在刪除'temp.setId((long)55)的機器上工作。 ' – 2011-02-23 07:49:42
-1 - 這個問題是報告公然不可能的事情。 – 2011-02-23 07:59:32