在 Java 中,将 String 转换为 List 的方法取决于你希望 List 中存储什么类型(如 List<String>、List<Character> 或自定义对象),以下是几种常见场景的详细方法和代码示例。

(图片来源网络,侵删)
将 String 转换为 List<String>(按分隔符分割)
如果字符串中有分隔符(如逗号、空格、分号等),可以使用 String.split() 方法。
示例代码
import java.util.Arrays;
import java.util.List;
public class StringToList {
public static void main(String[] args) {
String str = "apple,banana,orange,grape";
// 按逗号分割字符串
List<String> fruitList = Arrays.asList(str.split(","));
System.out.println(fruitList);
// 输出: [apple, banana, orange, grape]
}
}
注意事项
Arrays.asList()返回的是固定长度的列表,不能修改(如add()或remove()会抛出UnsupportedOperationException)。- 如果需要可修改的列表,可以用
new ArrayList<>()包装:List<String> fruitList = new ArrayList<>(Arrays.asList(str.split(",")));
将 String 转换为 List<Character>(每个字符作为一个元素)
如果需要将字符串拆分为单个字符的列表,可以使用 Java 8 的 String.chars() 或 String.toCharArray()。
方法 1:使用 String.chars()(推荐)
import java.util.stream.Collectors;
import java.util.List;
public class StringToCharList {
public static void main(String[] args) {
String str = "hello";
List<Character> charList = str.chars()
.mapToObj(c -> (char) c)
.collect(Collectors.toList());
System.out.println(charList);
// 输出: [h, e, l, l, o]
}
}
方法 2:使用 String.toCharArray()
import java.util.Arrays;
import java.util.List;
public class StringToCharList {
public static void main(String[] args) {
String str = "world";
List<Character> charList = new ArrayList<>();
for (char c : str.toCharArray()) {
charList.add(c);
}
System.out.println(charList);
// 输出: [w, o, r, l, d]
}
}
将 String 转换为自定义对象的 List
如果字符串是 JSON 格式或特定格式,可以解析为自定义对象的列表,以下是两种常见方式:
(1) 使用 JSON 库(如 Jackson/Gson)
假设字符串是 JSON 数组格式:

(图片来源网络,侵删)
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
public class JsonToList {
public static void main(String[] args) throws Exception {
String jsonStr = "[{\"name\":\"Alice\",\"age\":25},{\"name\":\"Bob\",\"age\":30}]";
ObjectMapper mapper = new ObjectMapper();
List<Person> personList = mapper.readValue(jsonStr,
mapper.getTypeFactory().constructCollectionType(List.class, Person.class));
System.out.println(personList);
// 输出: [Person{name='Alice', age=25}, Person{name='Bob', age=30}]
}
}
class Person {
private String name;
private int age;
// 构造方法、getter/setter 省略...
}
(2) 手动解析(适用于简单格式)
如果字符串是逗号分隔的键值对(如 "name:John,age:30"),可以手动分割:
import java.util.*;
import java.util.stream.Collectors;
public class CustomStringToList {
public static void main(String[] args) {
String str = "name:John,age:30,city:NewYork";
List<Map<String, String>> keyValueList = Arrays.stream(str.split(","))
.map(pair -> {
String[] keyValue = pair.split(":");
Map<String, String> map = new HashMap<>();
map.put(keyValue[0], keyValue[1]);
return map;
})
.collect(Collectors.toList());
System.out.println(keyValueList);
// 输出: [{name=John}, {age=30}, {city=NewYork}]
}
}
其他常见场景
(1) 去除空字符串
如果分割后可能有空字符串,可以用 filter 过滤:
String str = "apple,,orange,,grape";
List<String> list = Arrays.stream(str.split(","))
.filter(s -> !s.isEmpty())
.collect(Collectors.toList());
System.out.println(list); // 输出: [apple, orange, grape]
(2) 按正则表达式分割
String str = "apple;banana|orange,grape";
List<String> list = Arrays.asList(str.split("[;|,]"));
System.out.println(list); // 输出: [apple, banana, orange, grape]
| 需求 | 方法 | 示例 |
|---|---|---|
按分隔符转 List<String> |
String.split() + Arrays.asList() |
Arrays.asList("a,b".split(",")) |
转 List<Character> |
String.chars() + Collectors.toList() |
str.chars().mapToObj(c -> (char)c).collect(Collectors.toList()) |
| 转自定义对象列表 | JSON 库(Jackson/Gson) | mapper.readValue(jsonStr, List.class) |
| 处理复杂格式 | 手动分割 + 流式处理 | Arrays.stream(str.split(",")).filter(...) |
根据你的具体需求选择合适的方法!

(图片来源网络,侵删)
