假设我想要一个函数,我将使用Comparator对任何数组的第一列进行排序。我想将多维度数组传递给该函数,但是,每次此维度的数量可以不同。我正在考虑使用泛型类型函数,但这种方法似乎不起作用。怎么做?
更新: 我正在考虑编写这样的代码,但这甚至都没有编译,我不太确定我还能做什么呢。我必须补充一点,我只考虑字符串数组。
public <T> T sortArray(T array){
Arrays.sort(array, new Comparator<T>() {
@Override
public int compare(T lhs, T rhs) {
final String str1 = lhs[0];
final String str2 = rhs[0];
return str1.compareTo(str2);
}
});
return array;
}
答案 0 :(得分:0)
如果您希望它适用于泛型,您可能需要更改此项,但以下代码一般适用于对象(但更改比较方法中的转换以转换为您传入的任何类型)。
public Object[][] sortArray(Object[][] array){
Object[] columnElements = new Object[array.length];
for (int i = 0; i < array.length; i++) {
columnElements[i] = array[i][0];
}
Arrays.sort(columnElements, new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
return ((String) o1).compareTo((String) o2);
}
});
for (int i = 0; i < array.length; i++) {
array[i][0] = columnElements[i];
}
return array;
}