Java中的集合
Java LinkedList指南
Java ArrayList指南
Java中不可變的ArrayList
CopyOnWriteArrayList指南
JavaJava中的多維ArrayList
將迭代器轉換為列表
Java –從列表中獲取隨機項目/元素
用Java對列表進行分區
從Java列表中刪除所有Null
從Java中的列表中刪除所有重複項
檢查Java中兩個列表是否相等
如何使用Java在列表中查找元素
Java列表UnsupportedOperationException
將列表複製到Java中的另一個列表
從列表中刪除所有出現的特定值
將多個元素添加到Java ArrayList
從列表中刪除第一個元素
在Java中迭代列表的方法
Java中兩個列表的交集
如何計算Arraylist中的重複元素
查找Java中兩個列表之間的差異
Java中map到string字符串的轉換
1.概述
在本教程中,我們將重點介紹從Map到String的轉換以及其他方法。
首先,我們將看到如何使用核心Java方法來實現這些目標,然後,我們將使用一些第三方庫。
2.基本地圖示例
在所有示例中,我們將使用相同的Map實現:
Map<Integer, String> wordsByKey = new HashMap<>();
wordsByKey.put(1, "one");
wordsByKey.put(2, "two");
wordsByKey.put(3, "three");
wordsByKey.put(4, "four");
3.通過迭代將映射轉換為字符串
讓我們遍歷Map中的所有鍵,並針對它們中的每一個,將鍵值組合附加到我們生成的StringBuilder對像中。
為了格式化,我們可以將結果包裝在大括號中:
public String convertWithIteration(Map<Integer, ?> 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();
}
要檢查我們是否正確轉換了地圖,請運行以下測試:
@Test
public void givenMap_WhenUsingIteration_ThenResultingStringIsCorrect() {
String mapAsString = MapToString.convertWithIteration(wordsByKey);
Assert.assertEquals("{1=one, 2=two, 3=three, 4=four}", mapAsString);
}
4.使用Java流將映射轉換為字符串
要使用流執行轉換,我們首先需要根據可用的Map鍵創建一個流。
其次,我們將每個鍵映射到人類可讀的String。
最後,我們將這些值連接起來,為了方便起見,我們使用Collectors.joining()方法添加了一些格式設置規則:
public String convertWithStream(Map<Integer, ?> map) {
String mapAsString = map.keySet().stream()
.map(key -> key + "=" + map.get(key))
.collect(Collectors.joining(", ", "{", "}"));
return mapAsString;
}
5.使用番石榴將映射轉換為字符串
讓我們將Guava添加到我們的項目中,看看如何在一行代碼中實現轉換:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>27.0.1-jre</version>
</dependency>
要使用Guava的Joiner類執行轉換,我們需要定義不同Map條目之間的分隔符以及鍵和值之間的分隔符:
public String convertWithGuava(Map<Integer, ?> map) {
return Joiner.on(",").withKeyValueSeparator("=").join(map);
}
6.使用Apache Commons將映射轉換為字符串
要使用Apache Commons ,我們首先添加以下依賴項:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.2</version>
</dependency>
聯接非常簡單–我們只需要調用StringUtils.join方法即可:
public String convertWithApache(Map map) {
return StringUtils.join(map);
}
特別要提到的是Apache Commons中可用的debugPrint方法。這對於調試目的非常有用。
當我們打電話給:
MapUtils.debugPrint(System.out, "Map as String", wordsByKey);
調試文本將被寫入控制台:
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.使用流將字符串轉換為映射
為了執行從String到Map的轉換,讓我們定義分割位置以及如何提取鍵和值:
public Map<String, String> convertWithStream(String mapAsString) {
Map<String, String> map = Arrays.stream(mapAsString.split(","))
.map(entry -> entry.split("="))
.collect(Collectors.toMap(entry -> entry[0], entry -> entry[1]));
return map;
}
8.使用番石榴將字符串轉換為地圖
上面的一個更緊湊的版本是依靠Guava在單行過程中為我們進行拆分和轉換:
public Map<String, String> convertWithGuava(String mapAsString) {
return Splitter.on(',').withKeyValueSeparator('=').split(mapAsString);
}
9.結論
在本教程中,我們了解瞭如何將Map轉換為String以及如何同時使用核心Java方法和第三方庫。
所有這些示例的實現都可以在GitHub上找到。