Apakah ada cara asli untuk mengurutkan String berdasarkan isinya di java? Misalnya
String s = "edcba" -> "abcde"
toCharArray
diikuti oleh Arrays.sort
diikuti oleh panggilan konstruktor String:
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
String original = "edcba";
char[] chars = original.toCharArray();
Arrays.sort(chars);
String sorted = new String(chars);
System.out.println(sorted);
}
}
EDIT: Seperti yang ditunjukkan oleh tackline, ini akan gagal jika string berisi pasangan pengganti atau memang karakter gabungan (aksen + e sebagai karakter terpisah) dll. Pada titik itu akan menjadi jauh lebih sulit ... semoga Anda tidak membutuhkan ini :) Selain itu, ini hanya dipesan secara ordinal, tanpa memperhitungkan huruf besar, aksen, atau apa pun lainnya.
sorted
sudah menjadiString
... apa yang Anda harapkantoString()
untuk dilakukan?char[] c = s.toCharArray(); Arrays.sort(c); String sorted = new String(c);
Tidak, tidak ada metode String bawaan. Anda dapat mengonversinya menjadi array char, mengurutkannya menggunakan Arrays.sort dan mengubahnya kembali menjadi String.
Atau, ketika Anda ingin berurusan dengan benar dengan hal-hal spesifik lokal seperti huruf besar dan aksen karakter:
sumber
Di Java 8 dapat dilakukan dengan:
Alternatif yang sedikit lebih pendek yang bekerja dengan Stream of Strings of length satu (setiap karakter dalam String yang tidak disortir diubah menjadi String dalam Stream) adalah:
sumber
Konversi ke berbagai karakter → Sortir → Konversi kembali ke String :
sumber
Pendekatan yang lebih baku tanpa menggunakan metode sort Arrays.sort. Ini menggunakan jenis penyisipan.
sumber
Perhatikan bahwa ini tidak akan berfungsi seperti yang diharapkan jika itu adalah string case campuran (Ini akan menempatkan huruf besar sebelum huruf kecil). Anda dapat melewati pembanding ke metode Urutkan untuk mengubahnya.
sumber
Prosedur:
Cuplikan kode:
sumber
Pertanyaan: urutkan string dalam java
sumber
sumber
Tanpa menggunakan Koleksi di Jawa:
Keluaran:
sumber