Peta ke Penukaran Rentetan di Jawa

1. Gambaran keseluruhan

Dalam tutorial ini, kita akan memfokus pada penukaran dari Peta ke Rentetan dan sebaliknya.

Pertama, kita akan melihat bagaimana mencapainya menggunakan kaedah Java teras, dan selepas itu, kita akan menggunakan beberapa perpustakaan pihak ketiga.

2. Contoh Peta Asas

Dalam semua contoh, kami akan menggunakan pelaksanaan Peta yang sama :

Map wordsByKey = new HashMap(); wordsByKey.put(1, "one"); wordsByKey.put(2, "two"); wordsByKey.put(3, "three"); wordsByKey.put(4, "four");

3. Tukarkan Peta ke Rentetan dengan Mengulang

Mari ikuti semua kunci di Peta kami dan, untuk masing-masing, tambahkan kombinasi nilai-kunci ke objek StringBuilder yang dihasilkan .

Untuk tujuan pemformatan, kita dapat membungkus hasilnya dalam kurungan keriting:

public String convertWithIteration(Map map) { StringBuilder mapAsString = new StringBuilder("{"); for (Integer key : map.keySet()) { mapAsString.append(key + "=" + map.get(key) + ", "); } mapAsString.delete(mapAsString.length()-2, mapAsString.length()).append("}"); return mapAsString.toString(); }

Untuk memeriksa sama ada kami menukar Peta kami dengan betul, mari jalankan ujian berikut:

@Test public void givenMap_WhenUsingIteration_ThenResultingStringIsCorrect() { String mapAsString = MapToString.convertWithIteration(wordsByKey); Assert.assertEquals("{1=one, 2=two, 3=three, 4=four}", mapAsString); }

4. Tukarkan Peta ke Rentetan Menggunakan Aliran Java

Untuk melakukan penukaran menggunakan aliran, pertama-tama kita perlu membuat aliran dari kunci Peta yang ada .

Kedua, kami memetakan setiap kunci untuk String yang dapat dibaca oleh manusia .

Akhirnya, kami menggabungkan nilai-nilai tersebut, dan, demi kemudahan, kami menambahkan beberapa peraturan pemformatan menggunakan kaedah Collectors.joining () :

public String convertWithStream(Map map) { String mapAsString = map.keySet().stream() .map(key -> key + "=" + map.get(key)) .collect(Collectors.joining(", ", "{", "}")); return mapAsString; }

5. Tukarkan Peta ke Rentetan Menggunakan Jambu Batu

Mari tambahkan Jambu biji ke dalam projek kami dan lihat bagaimana kami dapat mencapai penukaran dalam satu baris kod:

 com.google.guava guava 27.0.1-jre 

Untuk melakukan penukaran menggunakan kelas Joiner Guava , kita perlu menentukan pemisah antara entri Peta yang berbeza dan pemisah antara kunci dan nilai:

public String convertWithGuava(Map map) { return Joiner.on(",").withKeyValueSeparator("=").join(map); }

6. Tukarkan Peta ke Rentetan Menggunakan Apache Commons

Untuk menggunakan Apache Commons, mari tambahkan kebergantungan berikut terlebih dahulu:

 org.apache.commons commons-collections4 4.2 

Penyertaan sangat mudah - kita hanya perlu memanggil kaedah StringUtils.join :

public String convertWithApache(Map map) { return StringUtils.join(map); }

Satu sebutan khas adalah kaedah debugPrint yang terdapat di Apache Commons. Ia sangat berguna untuk tujuan penyahpepijatan.

Apabila kita memanggil:

MapUtils.debugPrint(System.out, "Map as String", wordsByKey);

Teks debug akan ditulis ke konsol:

Map as String = { 1 = one java.lang.String 2 = two java.lang.String 3 = three java.lang.String 4 = four java.lang.String } java.util.HashMap

7. Tukarkan Rentetan ke Peta Menggunakan Aliran

Untuk melakukan penukaran dari String to a Map , mari kita tentukan tempat berpisah dan cara mengekstrak kunci dan nilai:

public Map convertWithStream(String mapAsString) { Map map = Arrays.stream(mapAsString.split(",")) .map(entry -> entry.split("=")) .collect(Collectors.toMap(entry -> entry[0], entry -> entry[1])); return map; }

8. Tukarkan Rentetan ke Peta Menggunakan Jambu Batu

Versi yang lebih ringkas di atas adalah bergantung kepada Jambu untuk melakukan pemisahan dan penukaran untuk kita dalam proses satu baris:

public Map convertWithGuava(String mapAsString) { return Splitter.on(',').withKeyValueSeparator('=').split(mapAsString); }

9. Kesimpulannya

Dalam tutorial ini, kami melihat cara mengubah Peta menjadi String dan sebaliknya menggunakan kedua-dua kaedah Java teras dan perpustakaan pihak ketiga.

Pelaksanaan semua contoh ini boleh didapati di GitHub.