Saya memiliki List<String>
objek yang berisi nama negara. Bagaimana saya bisa mengurutkan daftar ini berdasarkan abjad?
java
list
sorting
collections
alphabetical
Lennie
sumber
sumber
Jawaban:
Dengan asumsi bahwa itu adalah Strings, gunakan metode statis yang mudah digunakan
sort
...sumber
Solusi dengan Collections.sort
Jika Anda dipaksa untuk menggunakan Daftar itu, atau jika program Anda memiliki struktur suka
maka jawaban Thilos akan menjadi cara terbaik untuk melakukannya. Jika Anda menggabungkannya dengan saran dari Tom Hawtin - tackline , Anda mendapatkan:
Solusi dengan TreeSet
Jika Anda bebas untuk memutuskan, dan jika aplikasi Anda mungkin menjadi lebih kompleks, maka Anda dapat mengubah kode Anda untuk menggunakan TreeSet sebagai gantinya. Koleksi semacam ini mengurutkan entri Anda hanya ketika mereka dimasukkan. Tidak perlu memanggil sort ().
Catatan tentang mengapa saya lebih suka TreeSet
Ini memiliki beberapa keuntungan yang halus, tetapi penting:
TreeSet<String> countyNames
dan langsung tahu: ini adalah kumpulan String yang diurutkan tanpa duplikat, dan saya dapat yakin bahwa ini benar setiap saat . Begitu banyak informasi dalam deklarasi pendek.Menggunakan koleksi yang tepat untuk tugas yang tepat adalah kunci untuk menulis kode pendek dan bebas bug. Ini tidak terlalu demonstratif dalam kasus ini, karena Anda hanya menyimpan satu baris. Tapi saya sudah berhenti menghitung seberapa sering saya melihat seseorang menggunakan Daftar ketika mereka ingin memastikan tidak ada duplikat, dan kemudian membangun fungsi itu sendiri. Atau lebih buruk lagi, menggunakan dua Daftar saat Anda benar-benar membutuhkan Peta.
Jangan salah paham: Menggunakan Collections.sort bukan kesalahan atau cacat. Tetapi ada banyak kasus ketika TreeSet jauh lebih bersih.
sumber
Anda dapat membuat salinan diurutkan baru menggunakan Java 8 Stream atau Jambu:
Opsi lain adalah mengurutkan di tempat melalui API Koleksi:
sumber
Lebih baik terlambat daripada tidak sama sekali! Inilah cara kami dapat melakukannya (hanya untuk tujuan pembelajaran) -
sumber
Dalam satu baris, menggunakan Java 8:
sumber
Gunakan dua argumen untuk dari
Collections.sort
. Anda akan menginginkan yang cocokComparator
memperlakukan kasus yang sesuai (yaitu tidak leksikal, bukan memesan UTF16), seperti yang diperoleh melaluijava.text.Collator.getInstance
.sumber
Kecuali jika Anda mengurutkan string dalam bahasa Inggris bebas aksen saja, Anda mungkin ingin menggunakan a
Collator
. Ini akan mengurutkan dengan benar tanda diakritik, dapat mengabaikan huruf besar-kecil dan hal-hal khusus bahasa lainnya:Anda dapat mengatur kekuatan kolator , lihat javadoc.
Berikut ini adalah contoh untuk Slovak di mana
Š
harus pergi setelahS
, tetapi di UTFŠ
adalah suatu tempat setelahZ
:sumber
Inilah yang Anda cari
sumber
Dengan menggunakan
Collections.sort()
, kita dapat mengurutkan daftar.keluaran:
sumber
menurun alfabet:
sumber
Sama di JAWA 8: -
sumber
sumber
Anda dapat mencoba menggunakan metode yang saya buat.
String key
- akan menjadi urutan yang Anda inginkan dan dalam hal ini secara alfabet. Cukup cantumkan "abc ...".String list[]
- daftar yang ingin Anda masukkan menggunakan kunci.int index
- set sebagai 0, akan mengatur offset untuk kunci.sumber