Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从给定的索引开始对多维数组进行排序_Java_Sorting - Fatal编程技术网

Java 如何从给定的索引开始对多维数组进行排序

Java 如何从给定的索引开始对多维数组进行排序,java,sorting,Java,Sorting,我尝试仅对数组的选定部分进行排序 我尝试了以下代码: public static void shortArray(String[][] array){ Arrays.sort(array, new Comparator<String[]>() { @Override public int compare(final String[] entry1, final String[] entry2) { final float

我尝试仅对数组的选定部分进行排序

我尝试了以下代码:

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;
            }
        }
    });
}
publicstaticvoidshortarray(字符串[][]数组){
sort(数组,新的比较器(){
@凌驾
公共整数比较(最终字符串[]entry1,最终字符串[]entry2){
final float time1=float.parseFloat(entry1[1]);
final float time2=float.parseFloat(entry2[1]);
如果(时间2>时间1){
返回1;
}else if(time2==time1){
返回0;
}否则{
返回-1;
}
}
});
}
但它会对整个数组进行排序


是否有任何方法可以从特定索引开始排序?

是,通过创建数组的列表视图(通过
数组.asList
),并使用
列表.subList
集合.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));
String[]arr={{“5.0”、“a”}、{“3.0”、“b”}、{“2.0”、“c”}、{“4.0”、“d”}、{“1.0”、“e”};
//对范围2中的元素进行排序。。。棱长
List sublist=Arrays.asList(arr).sublist(2,arr.length);
Collections.sort(子列表,新比较器(){
@凌驾
公共整数比较(字符串[]a1,字符串[]a2){
返回Float.valueOf(a1[0])。比较(Float.valueOf(a2[0]));
}
});
//打印[[5.0,a]、[3.0,b]、[1.0,e]、[2.0,c]、[4.0,d]]
//         ^^^^^^^^^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
//不受第一个索引排序的影响
System.out.println(Arrays.deepToString(arr));

是,通过创建数组的列表视图(通过
数组.asList
),并使用
列表.subList
集合.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));
String[]arr={{“5.0”、“a”}、{“3.0”、“b”}、{“2.0”、“c”}、{“4.0”、“d”}、{“1.0”、“e”};
//对范围2中的元素进行排序。。。棱长
List sublist=Arrays.asList(arr).sublist(2,arr.length);
Collections.sort(子列表,新比较器(){
@凌驾
公共整数比较(字符串[]a1,字符串[]a2){
返回Float.valueOf(a1[0])。比较(Float.valueOf(a2[0]));
}
});
//打印[[5.0,a]、[3.0,b]、[1.0,e]、[2.0,c]、[4.0,d]]
//         ^^^^^^^^^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
//不受第一个索引排序的影响
System.out.println(Arrays.deepToString(arr));

从主列表中获取子列表,从特定索引(您需要的)开始。然后使用

Collections.sort(sublist)

希望有帮助。

从主列表中获取子列表,从特定索引(您需要的)开始。然后使用

Collections.sort(sublist)

希望这能有所帮助。

您应该将此帖子标记为答案;)您应该将此帖子标记为答案;)