日常妙招屋
白蓝主题五 · 清爽阅读
首页  > 无线组网

Java中字符串转List的几种实用方法

在日常开发中,经常会遇到需要把一个字符串转换成List的情况。比如从配置文件读取了一串IP地址,格式是用逗号分隔的,现在想把它们一个个存进List里方便后续处理。这时候,字符串转List就成了一个小而关键的操作。

使用Arrays.asList()结合split()

这是最常见也最简单的方式。假设你有一串用逗号分隔的设备名称:

String str = "router,switch,ap,repeater";
List<String> deviceList = Arrays.asList(str.split(","));

这样就得到了一个包含四个网络设备名称的List。注意,这个List是固定大小的,不能直接add或remove元素。如果后续需要修改,得再包装一层:

List<String> deviceList = new ArrayList<>(Arrays.asList(str.split(",")));

使用Java 8的Stream流

如果你用的是Java 8及以上版本,可以借助Stream让代码更清晰:

String str = "192.168.1.1,192.168.1.2,192.168.1.3";
List<String> ipList = Arrays.stream(str.split(","))
                        .map(String::trim)
                        .collect(Collectors.toList());

这里的map(String::trim)是为了去掉可能存在的空格,比如输入是"192.168.1.1, 192.168.1.2"这种带空格的情况,处理起来更安全。

去除空值或无效项

实际场景中,字符串里可能夹着空项,比如两个逗号连在一起:"ap,,repeater"。这时候可以直接过滤掉:

String str = "ap,,repeater,,bridge";
List<String> validDevices = Arrays.stream(str.split(","))
                              .filter(s -> !s.trim().isEmpty())
                              .collect(Collectors.toList());

这样得到的List就不会包含空字符串了,避免后续处理出错。

转换成其他类型的List

有时候不只是要字符串List,比如你要把一串端口号转成Integer的List:

String ports = "80,443,8080,9000";
List<Integer> portList = Arrays.stream(ports.split(","))
                            .map(Integer::parseInt)
                            .collect(Collectors.toList());

只要确保字符串内容能正常解析,这种方式就很高效。

这些方法在处理网络配置、设备列表、参数解析时都很实用。选哪种方式主要看你的JDK版本和具体需求,小项目用第一种就够了,复杂点的建议上Stream,代码更干净也更容易维护。