Jawaban:
Inilah salah satu cara untuk Anda list:
list.sort(null);
Collections.reverse(list);
Atau Anda dapat menerapkan sendiri Comparatoruntuk menyortir dan menghilangkan langkah sebaliknya:
list.sort((o1, o2) -> o2.compareTo(o1));
Atau bahkan lebih mudah digunakan Collections.reverseOrder()karena Anda hanya membalik:
list.sort(Collections.reverseOrder());
o2.compareTo(o1)sini :)
list.sort((o1, o2) -> o2.compareTo(o1))
Comparator<Long> comparator = Collections.reverseOrder();
Collections.sort(arrayList, comparator);
Anda dapat menggunakan kode berikut yang diberikan di bawah ini;
Collections.sort(list, Collections.reverseOrder());
atau jika Anda akan menggunakan komparator khusus, Anda dapat menggunakan seperti yang diberikan di bawah ini
Collections.sort(list, Collections.reverseOrder(new CustomComparator());
Dimana CustomComparator adalah kelas pembanding yang membandingkan objek yang ada dalam daftar.
melakukan ini di java 8 jauh lebih menyenangkan dan lebih mudah
Collections.sort(variants,(a,b)->a.compareTo(b));
Collections.reverse(variants);
Ekspresi lambda bergoyang di sini !!!
jika Anda membutuhkan lebih dari satu logika baris untuk membandingkan a dan b Anda dapat menuliskannya seperti ini
Collections.sort(variants,(a,b)->{
int result = a.compareTo(b);
return result;
});
Sortir secara normal dan gunakan Collections.reverse();
Sortir, lalu balik.
Pendekatan yang lebih umum untuk mengimplementasikan Pembanding kita sendiri seperti di bawah ini
Collections.sort(lst,new Comparator<Long>(){
public int compare(Long o1, Long o2) {
return o2.compareTo(o1);
}
});
Dengan menggunakan Collections.sort()komparator yang menyediakan urutan menurun. Lihat Javadoc untuk Collections.sort .
Pendekatan berikut akan mengurutkan daftar dalam urutan menurun dan juga menangani nilai ' null ', untuk berjaga-jaga jika Anda memiliki nilai null, Collections.sort () akan menampilkan 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);
}
});
Anda juga dapat mengurutkan ArrayListdengan a, TreeSetbukan dengan a comparator. Berikut adalah contoh dari pertanyaan yang saya miliki sebelumnya untuk array integer. Saya menggunakan "angka" sebagai nama placeholder untuk 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()+" ");
}
}
Jadi, ada sesuatu yang ingin saya kemukakan yang menurut saya penting dan menurut saya harus Anda pertimbangkan. runtime dan memori. Katakanlah Anda memiliki daftar dan ingin menyortirnya, Anda bisa, ada semacam bawaan atau Anda bisa mengembangkannya sendiri. Lalu Anda berkata, ingin membalik daftar. Itulah jawaban yang tercantum di atas.
Jika Anda membuat daftar itu, mungkin lebih baik menggunakan struktur data yang berbeda untuk menyimpannya dan kemudian membuangnya ke dalam array.
Heaps melakukan ini. Anda memfilter data, dan itu akan menangani semuanya, lalu Anda dapat mengeluarkan semuanya dari objek dan itu akan disortir.
Pilihan lainnya adalah memahami cara kerja peta. Seringkali, Map atau HashMap sebagai sesuatu yang disebut, memiliki konsep yang mendasarinya.
Misalnya .... Anda memberi makan sekelompok pasangan kunci-nilai di mana kuncinya adalah panjang, dan ketika Anda menambahkan semua elemen, Anda dapat melakukannya: .keysdan itu akan mengembalikan kepada Anda daftar yang diurutkan secara otomatis.
Itu tergantung pada bagaimana Anda memproses data sebelum bagaimana menurut saya Anda harus melanjutkan penyortiran dan pembalikan berikutnya
l1 > l2 ? -1 : l1 == l2 ? 0 : 1kode ini konyol. Gunakano1.compareTo(o2)kemudian.