Ubah String yang Dipisahkan Koma menjadi Daftar di Java

1. Ikhtisar

Dalam tutorial ini, kita akan melihat cara mengubah String yang dipisahkan koma menjadi Daftar string. Selain itu, kami akan mengubah dipisahkan koma String bilangan bulat ke Daftar dari Bilangan bulat .

2. Dependensi

Beberapa metode yang akan kita gunakan untuk konversi membutuhkan pustaka Apache Commons Lang 3 dan Guava. Jadi, mari tambahkan ke file pom.xml kita :

 org.apache.commons commons-lang3 3.8.1   com.google.guava guava 27.0.1-jre 

3. Mendefinisikan Teladan Kita

Sebelum kita mulai, mari kita tentukan dua string input yang akan kita gunakan dalam contoh kita. String pertama, negara, berisi beberapa string yang dipisahkan oleh koma, dan string kedua, rank, berisi angka yang dipisahkan dengan koma:

String countries = "Russia,Germany,England,France,Italy"; String ranks = "1,2,3,4,5,6,7";

Dan, di sepanjang tutorial ini, kami akan mengubah string di atas menjadi daftar string dan integer yang akan kami simpan di:

List convertedCountriesList; List convertedRankList;

Terakhir, setelah kami melakukan konversi, keluaran yang diharapkan adalah:

List expectedCountriesList = Arrays.asList("Russia", "Germany", "England", "France", "Italy"); List expectedRanksList = Arrays.asList(1, 2, 3, 4, 5, 6, 7);

4. Inti Java

Dalam solusi pertama kami, kami akan mengonversi string menjadi daftar string dan integer menggunakan inti Java.

Pertama, kita akan membagi string kita ke dalam array dari string menggunakan split, sebuah String metode utilitas kelas. Kemudian, kami akan menggunakan Arrays.asList pada array string baru kami untuk mengubahnya menjadi daftar string:

List convertedCountriesList = Arrays.asList(countries.split(",", -1));

Sekarang mari kita ubah rangkaian angka kita menjadi daftar bilangan bulat.

Kami akan menggunakan metode split untuk mengubah string angka kami menjadi array string. Kemudian, kami akan mengonversi setiap string dalam array baru kami menjadi integer dan menambahkannya ke daftar kami :

String[] convertedRankArray = ranks.split(","); List convertedRankList = new ArrayList(); for (String number : convertedRankArray) { convertedRankList.add(Integer.parseInt(number.trim())); }

Dalam kedua kasus ini, kami menggunakan metode utilitas split dari kelas String untuk memisahkan string yang dipisahkan koma menjadi array string.

Perhatikan bahwa metode pemisahan kelebihan beban yang digunakan untuk mengonversi string negara kami berisi batas parameter kedua , yang kami berikan nilainya sebagai -1. Ini menentukan bahwa pola pemisah harus diterapkan sebanyak mungkin.

The perpecahan Metode kami digunakan untuk membagi string kita bilangan bulat ( jajaran ) penggunaan nol sebagai batas , dan sehingga mengabaikan string kosong, sedangkan perpecahan digunakan pada negara-negara tali mempertahankan string kosong dalam array kembali.

5. Aliran Java

Sekarang, kami akan menerapkan konversi yang sama menggunakan Java Stream API.

Pertama, kita akan mengubah string negara kita menjadi array string menggunakan metode split di kelas String . Kemudian, kita akan menggunakan kelas Stream untuk mengubah array kita menjadi daftar string:

List convertedCountriesList = Stream.of(countries.split(",", -1)) .collect(Collectors.toList());

Mari kita lihat cara mengonversi rangkaian angka kita menjadi daftar bilangan bulat menggunakan Stream.

Sekali lagi, pertama-tama kita akan mengonversi string angka menjadi array string menggunakan metode split dan mengubah array yang dihasilkan menjadi Stream of String menggunakan metode of () di kelas Stream .

Kemudian, kita akan memotong spasi di depan dan di belakang dari setiap String di Stream menggunakan peta (String :: trim) .

Selanjutnya, kami akan menerapkan map (Integer :: parseInt) di aliran kami untuk mengonversi setiap string di Aliran kami menjadi Integer .

Dan terakhir, kami akan memanggil collect (Collectors.toList ()) di Stream untuk mengubahnya menjadi daftar integer:

List convertedRankList = Stream.of(ranks.split(",")) .map(String::trim) .map(Integer::parseInt) .collect(Collectors.toList());

6. Apache Commons Lang

Dalam solusi ini, kami akan menggunakan pustaka Apache Commons Lang3 untuk melakukan konversi kami. Apache Commons Lang3 menyediakan beberapa fungsi pembantu untuk memanipulasi kelas inti Java.

Pertama, kita akan membagi string kita menjadi array string menggunakan StringUtils.splitPreserveAllTokens . Kemudian, kita akan mengubah array string baru kita menjadi daftar menggunakan metode Arrays.asList :

List convertedCountriesList = Arrays.asList(StringUtils.splitPreserveAllTokens(countries, ","));

Sekarang mari kita ubah rangkaian angka kita menjadi daftar bilangan bulat.

Kami akan kembali menggunakan metode StringUtils.split untuk membuat array string dari string kami. Kemudian, kami akan mengonversi setiap string dalam array baru kami menjadi integer menggunakan Integer.parseInt dan menambahkan integer yang dikonversi ke daftar kami:

String[] convertedRankArray = StringUtils.split(ranks, ","); List convertedRankList = new ArrayList(); for (String number : convertedRankArray) { convertedRankList.add(Integer.parseInt(number.trim())); } 

Dalam contoh ini, kami menggunakan splitPreserveAllTokens metode untuk membagi kami negara tali, sedangkan kami menggunakan perpecahan metode untuk membagi kami jajaran tali.

Meskipun kedua fungsi ini memisahkan string menjadi larik, splitPreserveAllTokens mempertahankan semua token termasuk string kosong yang dibuat oleh pemisah yang berdampingan, sedangkan metode pemisahan mengabaikan string kosong .

Jadi, jika kita memiliki string kosong yang ingin kita masukkan dalam daftar kita, maka kita harus menggunakan splitPreserveAllTokens daripada split .

7. Jambu biji

Terakhir, kami akan menggunakan pustaka Guava untuk mengonversi string kami ke daftar yang sesuai.

Untuk mengonversi string negara kita, pertama-tama kita akan memanggil Splitter.on dengan koma sebagai parameter untuk menentukan karakter apa yang harus dipisahkan dari string kita.

Then, we'll use the trimResults method on our Splitter instance. This will ignore all leading and trailing white spaces from the created substrings.

Finally, we'll use the splitToList method to split our input string and convert it to a list:

List convertedCountriesList = Splitter.on(",") .trimResults() .splitToList(countries);

Now, let's convert the string of numbers to a list of integers.

We'll again convert the string of numbers into a list of stringsusing the same process we followed above.

Then, we'll use the Lists.transform method, which accepts our list of strings as the first parameter an implementation of the Function interface as the second parameter.

The Fungsi implementasi antarmuka mengkonversi setiap string dalam daftar kami untuk integer:

List convertedRankList = Lists.transform(Splitter.on(",") .trimResults() .splitToList(ranks), new Function() { @Override public Integer apply(String input) { return Integer.parseInt(input.trim()); } }); 

8. Kesimpulan

Pada artikel ini, kami mengonversi String yang dipisahkan koma menjadi daftar string dan daftar bilangan bulat. Namun, kita dapat mengikuti proses serupa untuk mengubah String menjadi daftar tipe data primitif apa pun.

Seperti biasa, kode dari artikel ini tersedia di Github.