string list转map
时间: 2023-11-09 08:02:15 浏览: 86
可以使用Java 8的Stream API将一个字符串列表转换为Map。假设列表中的每个字符串都是以逗号分隔的键值对,可以按照以下方式进行转换:
```
List<String> list = Arrays.asList("key1:value1", "key2:value2", "key3:value3");
Map<String, String> map = list.stream()
.map(s -> s.split(":"))
.collect(Collectors.toMap(a -> a[0], a -> a[1]));
```
这将创建一个包含键值对的Map,其中键是字符串中的冒号之前的部分,值是冒号之后的部分。
相关问题
java string list 转map
在Java中,将String列表转换为Map,通常的做法是使用`LinkedHashMap`或者自定义一个方法。这里我将展示如何使用`LinkedHashMap`来实现这个转换,因为`LinkedHashMap`会保留元素的插入顺序,这对于字符串列表到键值对的映射很有帮助。
```java
import java.util.*;
public class StringListToMap {
public static Map<String, String> listToMap(List<String> stringList) {
if (stringList == null || stringList.isEmpty()) {
return new HashMap<>();
}
// 假设列表中的每个元素都是"key:value"格式,用逗号分隔
Map<String, String> map = new LinkedHashMap<>();
for (String pair : stringList) {
String[] keyValue = pair.split(":");
if (keyValue.length == 2) {
map.put(keyValue.trim(), keyValue.trim());
} else {
throw new IllegalArgumentException("Invalid pair format: " + pair);
}
}
return map;
}
public static void main(String[] args) {
List<String> stringList = Arrays.asList("key1:value1", "key2:value2", "key3:value3");
Map<String, String> map = listToMap(stringList);
System.out.println(map); // 输出: {key1=value1, key2=value2, key3=value3}
}
}
```
String 转 Map<String,List<Map<String,List<Map<String,List>>>>>
可以通过解析 JSON 字符串来实现将 String 转化为 Map<String,List<Map<String,List<Map<String,List>>>>> 的转换操作。具体实现可以使用 JSON 解析库,例如 org.json 库,代码如下:
```java
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class StringToMapExample {
public static void main(String[] args) throws JSONException {
String jsonString = "{\"key1\":[{\"key2\":[{\"key3\":[{\"key4\":[{\"value\":\"foo\"}]}]}]}]}";
JSONObject jsonObject = new JSONObject(jsonString);
Map<String, List<Map<String, List<Map<String, List>>>>> map = new HashMap<>();
for (String key1 : jsonObject.keySet()) {
JSONArray jsonArray1 = jsonObject.getJSONArray(key1);
List<Map<String, List<Map<String, List>>>> list1 = new ArrayList<>();
for (int i = 0; i < jsonArray1.length(); i++) {
JSONObject jsonObject1 = jsonArray1.getJSONObject(i);
Map<String, List<Map<String, List>>> map1 = new HashMap<>();
for (String key2 : jsonObject1.keySet()) {
JSONArray jsonArray2 = jsonObject1.getJSONArray(key2);
List<Map<String, List>> list2 = new ArrayList<>();
for (int j = 0; j < jsonArray2.length(); j++) {
JSONObject jsonObject2 = jsonArray2.getJSONObject(j);
Map<String, List> map2 = new HashMap<>();
for (String key3 : jsonObject2.keySet()) {
JSONArray jsonArray3 = jsonObject2.getJSONArray(key3);
List<Map<String, List>> list3 = new ArrayList<>();
for (int k = 0; k < jsonArray3.length(); k++) {
JSONObject jsonObject3 = jsonArray3.getJSONObject(k);
Map<String, List> map3 = new HashMap<>();
for (String key4 : jsonObject3.keySet()) {
JSONArray jsonArray4 = jsonObject3.getJSONArray(key4);
List<Map<String, String>> list4 = new ArrayList<>();
for (int l = 0; l < jsonArray4.length(); l++) {
JSONObject jsonObject4 = jsonArray4.getJSONObject(l);
Map<String, String> map4 = new HashMap<>();
for (String valueKey : jsonObject4.keySet()) {
String value = jsonObject4.getString(valueKey);
map4.put(valueKey, value);
}
list4.add(map4);
}
map3.put(key4, list4);
}
list3.add(map3);
}
map2.put(key3, list3);
}
list2.add(map2);
}
map1.put(key2, list2);
}
Map<String, List<Map<String, List>>> finalMap1 = map1;
list1.add(finalMap1);
}
map.put(key1, list1);
}
System.out.println(map);
}
}
```
这段代码将 JSON 字符串解析为 Map<String,List<Map<String,List<Map<String,List>>>>> 的格式,并输出结果。注意,这种转换操作可能会非常复杂,因为它需要嵌套多层循环来处理嵌套的 JSON 对象和数组。
阅读全文