Відповіді:
Ось один із способів list:
list.sort(null);
Collections.reverse(list);
Або ви можете реалізувати власну Comparatorдля сортування та усунення зворотного кроку:
list.sort((o1, o2) -> o2.compareTo(o1));
Або ще простіше використовувати, Collections.reverseOrder()оскільки ви переводите лише назад:
list.sort(Collections.reverseOrder());
o2.compareTo(o1)тут :)
list.sort((o1, o2) -> o2.compareTo(o1))
Comparator<Long> comparator = Collections.reverseOrder();
Collections.sort(arrayList, comparator);
Ви можете використовувати наступний код, який наведено нижче;
Collections.sort(list, Collections.reverseOrder());
або якщо ви збираєтесь скористатись спеціальним компаратором, ви можете використовувати його, як зазначено нижче
Collections.sort(list, Collections.reverseOrder(new CustomComparator());
Де CustomComparator - це порівняльний клас, який порівнює об'єкт, присутній у списку.
добре робити це в java 8 - це так весело і простіше
Collections.sort(variants,(a,b)->a.compareTo(b));
Collections.reverse(variants);
Лямбда-вислови гойдаються тут !!!
у випадку, якщо для порівняння a і b вам потрібна більш ніж одна лінія логіки, ви можете записати її так
Collections.sort(variants,(a,b)->{
int result = a.compareTo(b);
return result;
});
Сортуйте нормально та використовуйте Collections.reverse();
Сортувати, потім повернути назад.
Більш загальний підхід до впровадження власного компаратора, як показано нижче
Collections.sort(lst,new Comparator<Long>(){
public int compare(Long o1, Long o2) {
return o2.compareTo(o1);
}
});
Використовуючи Collections.sort()компаратор, що забезпечує порядок зменшення. Див. Javadoc для Collections.sort .
Наступний підхід буде сортувати список у порядку зменшення, а також обробляє значення ' null ', на всякий випадок, якщо у вас є якісь нульові значення, то Collections.sort () викине NullPointerException
Collections.sort(list, new Comparator<Long>() {
public int compare(Long o1, Long o2) {
return o1==null?Integer.MAX_VALUE:o2==null?Integer.MIN_VALUE:o2.compareTo(o1);
}
});
Ви також можете впорядкувати ArrayListз TreeSetзамість comparator. Ось приклад із питання, яке у мене було раніше, для цілого масиву. Я використовую "числа" як назву заповнювача для ArrayList.
import.java.util.*;
class MyClass{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
ArrayList<Integer> numbers = new ArrayList<Integer>();
TreeSet<Integer> ts = new TreeSet<Integer>(numbers);
numbers = new ArrayList<Integer>(ts);
System.out.println("\nThe numbers in ascending order are:");
for(int i=0; i<numbers.size(); i++)
System.out.print(numbers.get(i).intValue()+" ");
System.out.println("\nThe numbers in descending order are:");
for(int i=numbers.size()-1; i>=0; i--)
System.out.print(numbers.get(i).intValue()+" ");
}
}
Отже, я хотів би підняти щось, що я вважаю важливим, і я думаю, що ви повинні розглянути. час виконання та пам'ять. Скажіть, у вас є список і ви хочете його сортувати, ну можете, є вбудований у сорт або ви можете розробити свій власний. Тоді ви кажете, хочете перевернути список. Це відповідь, перелічена вище.
Якщо ви створюєте цей список, можливо, було б корисно використовувати іншу структуру даних для його зберігання, а потім просто скинути його в масив.
Купи роблять саме це. Ви фільтруєте дані, і він буде обробляти все, тоді ви можете вискакувати все з об'єкта, і це було б відсортовано.
Іншим варіантом було б зрозуміти, як працюють карти. Багато разів карта чи HashMap, як щось називається, мають за собою концепцію.
Наприклад .... ви подаєте купу пар ключових значень, де ключ довгий, і коли ви додасте всі елементи, ви можете це зробити: .keysі він автоматично поверне вам відсортований список.
Це залежить від того, як ви обробляєте дані до того, як я думаю, ви повинні продовжувати своє сортування та подальші реверси
l1 > l2 ? -1 : l1 == l2 ? 0 : 1цей код смішний. Використовуйтеo1.compareTo(o2)потім.