我尝试只对数组的选定部分进行排序。
我试过这段代码:
public static void shortArray(String[][] array){
Arrays.sort(array, new Comparator<String[]>() {
@Override
public int compare(final String[] entry1, final String[] entry2) {
final float time1 = Float.parseFloat(entry1[1]);
final float time2 = Float.parseFloat(entry2[1]);
if (time2 > time1) {
return 1;
} else if (time2 == time1) {
return 0;
} else {
return -1;
}
}
});
}
但它会对整个数组进行排序。
有没有办法从特定索引开始排序?
答案 0 :(得分:4)
是的,通过创建数组的列表视图(通过Arrays.asList
),并使用list.subList
和Collections.sort
对其中的一部分进行排序。
String[][] arr = {{"5.0","a"},{"3.0","b"},{"2.0","c"},{"4.0","d"},{"1.0","e"}};
// Sort elements in range 2 ... arr.length
List<String[]> sublist = Arrays.asList(arr).subList(2, arr.length);
Collections.sort(sublist, new Comparator<String[]>() {
@Override
public int compare(String[] a1, String[] a2) {
return Float.valueOf(a1[0]).compareTo(Float.valueOf(a2[0]));
}
});
// Prints [[5.0, a], [3.0, b], [1.0, e], [2.0, c], [4.0, d]]
// ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
// not affected sorted by first index
System.out.println(Arrays.deepToString(arr));
答案 1 :(得分:1)
从主列表中获取子列表,从特定索引(您需要)开始。然后使用
Collections.sort(sublist)
希望有所帮助。