Как сортировать многомерные массивы, начиная с заданного индекса - PullRequest
2 голосов
/ 15 февраля 2012

Я пытаюсь отсортировать только выбранную часть массива.

Я пробую этот код:

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

, но сортирует весь массив.

ЕстьЕсть ли способ сортировки, начиная с определенного индекса?

Ответы [ 2 ]

4 голосов
/ 15 февраля 2012

Да, путем создания представления списка массива (через 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 голос
/ 15 февраля 2012

Возьмите подсписок из основного списка, начиная с определенного индекса (который вам нужен).Затем используйте

Collections.sort(sublist)

Надеюсь, что поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...