2014-02-12 5 views
1

У меня есть список массивов из 10 предметов. Я хочу сортировать эти элементы по их параметрам, но я точно не знаю, как это сделать.Как отсортировать список массивов по его параметрам?

Сигнатура моих элементов в списке массива является:

Creature(String n, Terrain startTerrain, boolean flying, boolean magic, boolean charge, boolean ranged, int combat) 

Поэтому в основном я хочу, чтобы мой список массива отсортирован так что существа, где магия является истинной, они первыми, то существа, где варьировались в первую , они появляются в списке, а затем все остальное.

Я работал только с пузырьковой сортировкой, и я не уверен, как это реализовать. Любые намеки?

+3

'Collections.sort' с пользовательским компаратором. –

+0

Вы также можете реализовать [Comparable] (http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html). –

ответ

2

Самый простой способ - создать свой собственный класс, который реализует Comparator<Creature>, скажем, CreatureComparator. Его compare method будет определять порядок ваших Creature s, который вы хотите.

Сравнивает два аргумента для заказа. Возвращает отрицательное целое число, ноль или положительное целое число, поскольку первый аргумент меньше, равен или больше второго.

Тогда вы можете позвонить по телефону Collections.sort(yourArrayList, new CreatureComparator());.

Чтобы отсортировать несколько атрибутов сразу, сначала проверьте первый критерий сортировки. То есть если левая сторона magic - true, но magic - правая сторона false, а затем возвращает -1, так что все магические существа перед всеми не магическими существами. Если это назад, верните 1. Только если поля magic совпадают, вы начинаете сравнивать вторичные и третичные (и любые другие) критерии сортировки. Поэтому, если поля magic совпадают, проверьте ranged и т. Д. Только если все ваши критерии сортировки совпадают, вы вернете 0 (эквивалент).

+0

Я могу видеть, как сравнивать две вещи, но как я могу сортировать по 3 вещам? – Sarah

+0

См. Мой обновленный ответ; Я объяснил, как можно сортировать по нескольким критериям одновременно. – rgettman

Смежные вопросы