杰瑞科技汇

Java String转List有哪些方法?

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

Java String转List有哪些方法?-图1
(图片来源网络,侵删)

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 数组格式:

Java String转List有哪些方法?-图2
(图片来源网络,侵删)
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(...)

根据你的具体需求选择合适的方法!

Java String转List有哪些方法?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇