Lebih
Cara semacam ArrayList?
Saya memiliki Daftar ganda di pulau jawa dan saya ingin mengurutkan ArrayList dalam urutan.
Masukan ArrayList adalah sebagai berikut:
List<Double> testList = new ArrayList();
testList.add(0.5);
testList.add(0.2);
testList.add(0.9);
testList.add(0.1);
testList.add(0.1);
testList.add(0.1);
testList.add(0.54);
testList.add(0.71);
testList.add(0.71);
testList.add(0.71);
testList.add(0.92);
testList.add(0.12);
testList.add(0.65);
testList.add(0.34);
testList.add(0.62);
Out put harus seperti ini
0.92
0.9
0.71
0.71
0.71
0.65
0.62
0.54
0.5
0.34
0.2
0.12
0.1
0.1
0.1
334
18
Yang akan melakukan apa yang anda inginkan. Ingat untuk mengimpor
Koleksi
meskipun!Berikut ini merupakan dokumentasi untuk
Collections
.Menurun:
Gunakan util metode jawa.util.Koleksi kelas, aku.e
Pada kenyataannya, jika anda ingin mengurutkan objek kustom, anda dapat menggunakan
melihat api koleksi
Untuk contoh, ini akan melakukan keajaiban di pulau Jawa 8
Tapi jika anda ingin mengurutkan berdasarkan beberapa bidang dari objek yang anda menyortir, anda dapat melakukannya dengan mudah dengan:
atau
atau
Sumber: https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html
Menggunakan lambdas (Java8), dan stripping itu ke paling sederhana dari sintaks (JVM akan menyimpulkan banyak ** dalam kasus ini), anda mendapatkan:
Lebih verbose versi:
Penggunaan lambda adalah mungkin karena antarmuka Komparator hanya memiliki satu metode untuk melaksanakan, jadi VM dapat menyimpulkan metode yang menerapkan. Karena jenis params dapat disimpulkan, mereka don't harus menyatakan (yaitu
(a, b)
bukannya(Double a, Double b)
. Dan sejak lambda tubuh hanya memiliki satu baris, dan metode ini diharapkan dapat mengembalikan nilai,kembali
maksud dan kawat gigi aren't perlu.Dengan Java8 ada default sort metode pada Daftar interface yang akan memungkinkan anda untuk menyortir koleksi jika anda memberikan sebuah Komparator. Anda dapat dengan mudah mengurutkan contoh dalam pertanyaan sebagai berikut:
Catatan: args di lambda yang tertukar ketika berlalu di Ganda.bandingkan untuk memastikan semacam ini turun
Anda dapat menggunakan
Koleksi.mengurutkan(daftar)
memilahdaftar
jikalist
berisiSebanding
elemen. Jika tidak, saya akan merekomendasikan anda untuk menerapkan bahwa antarmuka seperti berikut:dan tentu saja memberikan anda sendiri realisasi
compareTo
metode seperti berikut ini:Koleksi.semacam
memungkinkan anda untuk melewati sebuah contoh dariPembanding
yang mendefinisikan logika pengurutan. Jadi bukan menyortir daftar di alam dan kemudian membalikkan itu, satu hanya dapat lulusKoleksi.reverseOrder()
untuksort
untuk mengurutkan daftar dalam urutan terbalik:Seperti yang disebutkan oleh @Marco13, selain menjadi lebih idiomatik (dan mungkin lebih efisien), menggunakan urutan terbalik pembanding memastikan bahwa semacam stabil (yang berarti bahwa urutan unsur-unsur yang tidak akan berubah ketika mereka sama menurut pembanding, sedangkan membalikkan akan mengubah urutan)
jika anda menggunakan Java SE 8, maka ini mungkin bisa membantu.
|*| Mengurutkan sebuah List :
|=> Sort Asc Order :
|=> Jenis Dsc Order :
|*| Membalik urutan Daftar :
Anda dapat melakukannya seperti ini:
Koleksi memiliki standar Pembanding yang dapat membantu anda dengan itu.
Juga, jika anda ingin menggunakan beberapa Java 8 fitur baru, anda dapat melakukan seperti itu:
Berikut adalah pendek cheatsheet yang meliputi kasus-kasus yang khas:
Anda dapat menggunakan seperti itu
Di JAWA 8 lebih mudah sekarang.
-- Untuk membalikkan menggunakan ini
Misalnya saya punya sebuah kelas Orang: String nama, int usia ==>Konstruktor new Orang(nama,umur)
Berikut line harus melakukan tebal
Dengan Eclipse Koleksi anda bisa membuat primitif ganda daftar, semacam itu dan kemudian membalikkan itu untuk memasukkannya ke dalam urutan. Pendekatan ini akan menghindari tinju ganda.
Jika anda ingin
Daftar<Ganda>
, maka berikut ini akan bekerja.Jika anda ingin menyimpan jenis sebagai
ArrayList<Ganda>
, anda dapat menginisialisasi dan mengurutkan daftar menggunakanArrayListIterate
utilitas kelas sebagai berikut:Catatan: saya seorang kewajiban untuk Eclipse Koleksi.