定制比较器的效率

时间:2014-07-21 15:30:54

标签: java performance comparator

这两个自定义比较器中哪一个效率最高? (用于数千个数组的向量)

//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]);
        }
}

1 个答案:

答案 0 :(得分:2)

第一个更有效,因为如果第一个元素不同,则返回该比较的结果,而不是像第二个那样进行比较,从而节省一个比较。严格遵循原则&#34;减少工作量=减少执行时间&#34;。

也就是说,如果字符串不长并且共享一个公共前缀,String.compare()非常快。所以你可能没有看到练习中的差异。