Java实现字符串转List的常见方式总结
作者:小高学习java
在Java开发中,我们经常需要将字符串转换为List类型,以便进行后续处理。下面介绍几种常见的字符串转List的方式,并给出相应的使用教程。
一、使用Arrays.asList()方法
如果你有一个由逗号分隔的字符串,并希望将其拆分为一个List,你可以使用Arrays.asList()配合String.split()方法来实现。
import java.util.Arrays;
import java.util.List;
public class StringToListExample {
public static void main(String[] args) {
String str = "item1,item2,item3";
List<String> list = Arrays.asList(str.split(","));
System.out.println(list); // 输出: [item1, item2, item3]
}
}
注意:Arrays.asList()返回的List是固定大小的,不支持添加或删除元素。如果需要可变的List,可以将其转换为ArrayList。
List<String> mutableList = new ArrayList<>(Arrays.asList(str.split(",")));
二、使用Stream API
Java 8引入了Stream API,可以更方便地对集合进行操作。你可以使用Arrays.stream()或Pattern.compile()与String.splitAsStream()来将字符串转换为流,然后收集为List。
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StringToListWithStreamExample {
public static void main(String[] args) {
String str = "item1,item2,item3";
// 使用Arrays.stream()
List<String> list1 = Stream.of(str.split(","))
.collect(Collectors.toList());
System.out.println(list1); // 输出: [item1, item2, item3]
// 使用Pattern.compile()与splitAsStream()
List<String> list2 = Pattern.compile(",")
.splitAsStream(str)
.collect(Collectors.toList());
System.out.println(list2); // 输出: [item1, item2, item3]
}
}
三、使用Guava库
Guava是Google提供的一个Java核心库,它提供了很多实用的功能,包括字符串到List的转换。
首先,你需要在项目中添加Guava的依赖:
<!-- Maven依赖 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>最新版本号</version>
</dependency>然后,你可以使用Guava的Splitter类来分割字符串并转换为List。
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
public class StringToListWithGuavaExample {
public static void main(String[] args) {
String str = "item1,item2,item3";
Iterable<String> iterable = Splitter.on(',').trimResults().split(str);
List<String> list = Lists.newArrayList(iterable);
System.out.println(list); // 输出: [item1, item2, item3]
}
}
四、使用Apache Commons Lang库
Apache Commons Lang库也提供了字符串操作的功能,包括将字符串转换为List。
首先,你需要在项目中添加Apache Commons Lang的依赖:
<!-- Maven依赖 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>最新版本号</version>
</dependency>然后,你可以使用StringUtils类的split()方法结合Arrays.asList()或转换为ArrayList。
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
public class StringToListWithCommonsLangExample {
public static void main(String[] args) {
String str = "item1,item2,item3";
String[] array = StringUtils.split(str, ',');
List<String> list = Arrays.asList(array); // 固定大小的List
// 或者
List<String> mutableList = new ArrayList<>(Arrays.asList(array)); // 可变的List
System.out.
五、方法补充
以下代码演示了使用阿里巴巴 Fastjson 库将 JSON 字符串转换为 Java 对象列表的两种常用方式。
方式一:通过 JSONObject.parseObject 结合 TypeReference 实现泛型反序列化。首先创建空的 ArrayList 对象,然后调用 parseObject 方法,传入 JSON 字符串和 TypeReference<List> 类型引用,即可将 JSON 数组转换为指定泛型类型的对象列表。这种方式适用于需要明确指定泛型类型的场景,能够避免类型擦除问题。
方式二:通过 JSONArray.parseArray 直接进行转换。该方法更加简洁,直接传入 JSON 字符串和目标类的 Class 对象,即可快速将 JSON 数组转换为对应类型的列表。这种方式适用于结构简单、类型明确的场景。
两种方式均可实现 JSON 到 Java 列表的转换,方式一通过 TypeReference 保留了泛型信息,方式二则更加简洁直观,开发者可根据实际需求和编码习惯选择使用。
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.JSONObject;
String str = "[
{
"id": 5,
"nodeIdArr": "[\"221\",\"222\"]",
"nodeNameArr": "[\"enb_221\",\"2222\"]",
"upperLimitOfTheBusyTimeThreshold": 9,
"lowerLimitOfTheBusyTimeThreshold": 2,
"dateRangeBeginTime": 1701648000000,
"dateRangeEndTime": 1701682200000,
"createTime": 1701676594000,
"updateTime": 1701737385000,
"activeState": "1"
},
{
"id": 6,
"nodeIdArr": "[\"2003\",\"501\",\"10010\"]",
"nodeNameArr": "[\"CityA\",\"501\",\"Vir1\"]",
"upperLimitOfTheBusyTimeThreshold": 9,
"lowerLimitOfTheBusyTimeThreshold": 2,
"dateRangeBeginTime": 1701648000000,
"dateRangeEndTime": 1701682200000,
"createTime": 1701676641000,
"updateTime": 1701737382000,
"activeState": "1"
}]"
List<BusyTimeIndicatorAlarmThreshold> busyTimeIndicatorAlarmThresholdList = new ArrayList<>();
busyTimeIndicatorAlarmThresholdList = JSONObject.parseObject(str, new TypeReference<List<BusyTimeIndicatorAlarmThreshold>>() {});方式一
List busyTimeIndicatorAlarmThresholdList = new ArrayList<>();
busyTimeIndicatorAlarmThresholdList = JSONObject.parseObject(str, new TypeReference<List>() {});方式二
List userList = JSONArray.parseArray(str, User.class);
到此这篇关于Java实现字符串转List的常见方式总结的文章就介绍到这了,更多相关Java字符串转List内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
