我正在像excel中的电子表格一样阅读.csv
文件。有一定数量的列,由文件确定,我使用.split(",")
方法将每一行读入字符串数组。然后,我将其放入数组列表中,这样它就可以容纳所有字符串数组,而无需指定特定大小。但是,当我使用Collections.sort()
对数组列表进行排序时,程序将中断。可能是什么问题?这是我要排序的代码:
Collections.sort(stringList, new Comparator < String[] > () {
public int compare(String[] strings, String[] otherStrings) {
return -1 * (strings[sortNum].compareTo(otherStrings[sortNum]));
}
});
最佳答案
两点:
compare
的结果乘以-1来反转比较。 Integer.MIN_VALUE * -1
仍然是Integer.MIN_VALUE
。相反,可以颠倒比较本身的顺序就像是:
Collections.sort(stringList, new Comparator < String[] > () {
public int compare(String[] x1, String[] x2) {
if (x1.length > sortNum && x2.length > sortNum) {
return x2[sortNum].compareTo(x1[sortNum]);
}
if (x1.length > sortNum) {
return 1;
}
if (x2.length > sortNum) {
return -1;
}
return x2.length - x1.length;
}
});
或者,首先过滤列表以确保所有行都有足够的列。