在 Java 中,将 String 转换为 List 是一个常见操作,具体转换方式取决于你希望如何分割字符串,例如按单个字符、按特定分隔符(如逗号、空格)或按正则表达式。

以下是几种常见的转换方法:
方法 1:按单个字符分割(每个字符作为一个元素)
如果希望将字符串的每个字符作为一个独立的元素存入 List,可以使用 String.toCharArray() + Arrays.asList():
String str = "hello";
List<Character> charList = new ArrayList<>();
// 方法 1:遍历字符数组
for (char c : str.toCharArray()) {
charList.add(c);
}
// 方法 2:使用 Java 8 Stream(更简洁)
List<Character> charListStream = str.chars()
.mapToObj(c -> (char) c)
.collect(Collectors.toList());
System.out.println(charList); // [h, e, l, l, o]
System.out.println(charListStream); // [h, e, l, l, o]
方法 2:按分隔符分割(如逗号、空格等)
如果字符串包含分隔符(如 、、空格等),可以用 String.split() 分割后再转为 List:
示例 1:按逗号分割
String str = "apple,banana,orange";
List<String> list = Arrays.asList(str.split(","));
System.out.println(list); // [apple, banana, orange]
示例 2:按空格分割
String str = "Java is fun";
List<String> list = Arrays.asList(str.split(" "));
System.out.println(list); // [Java, is, fun]
注意事项
Arrays.asList()返回的是固定长度的列表(Arrays$ArrayList),不能添加或删除元素,如果需要动态修改,建议用new ArrayList<>()包装:List<String> dynamicList = new ArrayList<>(Arrays.asList(str.split(",")));
方法 3:按正则表达式分割
更复杂的分割需求(如多个分隔符)可以用正则表达式:

String str = "apple,banana;orange|grape";
List<String> list = Arrays.asList(str.split("[,;|]"));
System.out.println(list); // [apple, banana, orange, grape]
方法 4:使用 Java 8 Stream(灵活处理)
Stream 提供了更灵活的转换方式,例如过滤空字符串或处理复杂逻辑:
String str = "apple,banana,,orange";
List<String> list = Arrays.stream(str.split(","))
.filter(s -> !s.isEmpty()) // 过滤空字符串
.collect(Collectors.toList());
System.out.println(list); // [apple, banana, orange]
| 需求场景 | 方法 | 示例 |
|---|---|---|
| 每个字符作为一个元素 | toCharArray() + Stream 或遍历 |
List<Character> |
| 按固定分隔符(如逗号) | split(",") + Arrays.asList() |
List<String> |
| 按正则表达式分割 | split("[,;|]") |
List<String> |
| 动态列表(可增删) | new ArrayList<>(Arrays.asList()) |
ArrayList<String> |
| 复杂逻辑(过滤、转换) | Java 8 Stream | List<String> |
选择适合你的场景的方法即可!

