这两个自定义比较器中哪一个效率最高? (用于数千个数组的向量)
//Compares arrays by their first element, then second if equal
Comparator<String[]> comparator = new Comparator<String[]>() {
public int compare(String[] c1, String[] c2) {
int comparison;
if((comparison=(c1[0].compareTo(c2[0])))==0) return c1[1].compareTo(c2[1]);
else return comparison;
}
};
//Compares arrays by their first element, then second if equal
Comparator<String[]> comparator = new Comparator<String[]>() {
public int compare(String[] c1, String[] c2) {
if(c1[0].compareTo(c2[0])==0) return c1[1].compareTo(c2[1]);
else return c1[0].compareTo(c2[0]);
}
}
答案 0 :(得分:2)
第一个更有效,因为如果第一个元素不同,则返回该比较的结果,而不是像第二个那样进行比较,从而节省一个比较。严格遵循原则&#34;减少工作量=减少执行时间&#34;。
也就是说,如果字符串不长并且共享一个公共前缀,String.compare()非常快。所以你可能没有看到练习中的差异。