感谢Zirak的帮助在我之前的帖子中,我在 JavaScript 中实现了以下内容:
var arr1 =[0,1,2,3];
var arr2 =["ac", "bc", "ad", "e"];
var result = arr1 .sort(function(i, j){return arr2[i].localeCompare(arr2[j])})
document.write(result );
实现这一点的方式在 JavaScript 中是相当紧凑的,这种简单的 java 实现也能实现吗?我只能想到实现 Comparable 接口,如下所示:
public class testCompare {
public static String[] arr2={"ac", "bc", "ad", "e"};
public static Obj[] arr1={new Obj(0), new Obj(1), new Obj(2), new Obj(3)};
static class Obj implements Comparable{
int index=0;
public Obj(int i){
index=i;
}
@Override
public int compareTo(Object o) {
return arr2[index].compareTo(arr2[((Obj)o).index]);
}
}
}
但是如果数组有 X 很多项目,那么我将不得不创建 X 很多 Objs,有没有另一种方法可以更简单地实现这一点?另一个问题是,如果我执行上述方法,那么在 java 和 JavaScript 中排序的时间复杂度是多少,它们都是O(n^2)
?非常感谢