Java实战小技巧之字符串与容器互转详解
1. 前言
在Java编程中,我们常常需要将字符串(String)与容器(List、Set、Map)进行转化。本文将详细讲解如何使用Java提供的工具类来实现两者之间的互转。
本文的代码示例基于Java 8及以上版本。
2. 字符串转容器
2.1 字符串转List
2.1.1 普通字符串转List
普通字符串转List时,我们可以使用JDK内置的Arrays类提供的方法,例如Arrays.asList()方法。
String str = "apple,banana,orange";
List<String> fruits = Arrays.asList(str.split(","));
上述代码将以逗号为分隔符,将字符串 "apple,banana,orange" 转换成了一个List对象,其元素分别是 "apple"、"banana" 和 "orange"。
2.1.2 JSON字符串转List
对于JSON格式的字符串,我们可以使用第三方库如FastJSON或Google Gson来进行转换。以下是使用FastJSON库将JSON字符串转化为List的示例代码:
String jsonStr = "[{\"name\":\"apple\",\"color\":\"red\"},{\"name\":\"banana\",\"color\":\"yellow\"}]";
List<Fruit> fruits = JSON.parseArray(jsonStr, Fruit.class);
上述代码将JSON格式的字符串转换成一个List对象,List中包含两个Fruit对象,分别是{name=apple, color=red}和{name=banana, color=yellow}。
2.2 字符串转Set
字符串转Set同样可以使用Arrays.asList()方法,然后将List转换成Set即可。示例代码如下:
String str = "java,python,java,go";
Set<String> set = new HashSet<>(Arrays.asList(str.split(",")));
上述代码将以逗号为分隔符,将字符串 "java,python,java,go" 转换成了一个Set对象,其元素分别是 "java"、"python" 和 "go"。
2.3 字符串转Map
2.3.1 普通字符串转Map
普通字符串转Map时,我们通常需要指定key和value之间的分隔符,并且每一对key-value之间需要指定一个分隔符。下面的示例代码使用了Java 8提供的Stream API来实现这个功能。
String str = "apple:red,banana:yellow,orange:orange";
Map<String, String> map = Arrays.stream(str.split(","))
.map(s -> s.split(":"))
.collect(Collectors.toMap(s -> s[0], s -> s[1]));
上述代码将以逗号为分隔符,将字符串 "apple:red,banana:yellow,orange:orange" 转换成了一个Map对象,其键值对分别是 {apple=red, banana=yellow, orange=orange}。
2.3.2 JSON字符串转Map
对于JSON格式的字符串,我们同样可以使用FastJSON或Google Gson来进行转换。以下是FastJSON库将JSON字符串转换成Map的示例代码:
String jsonStr = "{\"name\":\"apple\",\"color\":\"red\"}";
Map<String, Object> map = JSON.parseObject(jsonStr, new TypeReference<Map<String, Object>>() {});
上述代码将JSON格式的字符串转换成一个Map对象,该Map对象包含两个键值对,分别是 {name=apple, color=red}。
3. 容器转字符串
3.1 List转字符串
3.1.1 普通List转字符串
普通List转字符串时,我们可以使用字符串的join()方法,将List中的元素连接起来。以下是示例代码:
List<String> list = Arrays.asList("java", "python", "go");
String str = String.join(",", list);
上述代码将List中的元素连接成一个字符串,其中每个元素之间以逗号分隔,结果为 "java,python,go"。
3.1.2 List转JSON字符串
对于需要将List转换成JSON格式的字符串,我们同样可以使用FastJSON或Google Gson库。以下是示例代码:
List<Fruit> fruits = new ArrayList<>();
fruits.add(new Fruit("apple", "red"));
fruits.add(new Fruit("banana", "yellow"));
String jsonStr = JSON.toJSONString(fruits);
上述代码将一个List对象转换成JSON格式的字符串,结果为 "[{\"name\":\"apple\",\"color\":\"red\"},{\"name\":\"banana\",\"color\":\"yellow\"}]"。
3.2 Set转字符串
Set转字符串和List转字符串类似,也可以使用字符串的join()方法来实现。以下是示例代码:
Set<String> set = new HashSet<>(Arrays.asList("java", "python", "go"));
String str = String.join(",", set);
上述代码将Set中的元素连接成一个字符串,其中每个元素之间以逗号分隔,结果为 "java,python,go"。
3.3 Map转字符串
3.3.1 普通Map转字符串
普通Map转字符串时,我们可以使用StringBuilder来拼接字符串。以下是示例代码:
Map<String, String> map = new HashMap<>();
map.put("apple", "red");
map.put("banana", "yellow");
map.put("orange", "orange");
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : map.entrySet()) {
sb.append(entry.getKey()).append(":").append(entry.getValue()).append(",");
}
String str = sb.deleteCharAt(sb.length() - 1).toString();
上述代码将Map中的键值对拼接成一个字符串,其中每个键值对之间以逗号分隔,结果为 "apple:red,banana:yellow,orange:orange"。
3.3.2 Map转JSON字符串
同样地,我们可以使用FastJSON或Google Gson库将Map对象转换成JSON格式的字符串。以下是示例代码:
Map<String, Object> map = new HashMap<>();
map.put("name", "apple");
map.put("color", "red");
String jsonStr = JSON.toJSONString(map);
上述代码将Map对象转换成JSON格式的字符串,结果为 "{\"name\":\"apple\",\"color\":\"red\"}"。
4. 总结
本文详细讲解了Java中字符串与容器(List、Set、Map)之间的互相转换过程,包括普通字符串和JSON格式字符串的转换。在实际开发中,根据需要选择合适的工具类,能够更加高效地完成数据之间的转化。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实战小技巧之字符串与容器互转详解 - Python技术站