Java中String转List
1. 引言
在Java中,经常需要将字符串(String)转换为列表(List)的形式。这样做的一个常见场景是,从数据库或文件中读取到一串用特定分隔符隔开的文本,需要将其拆分为具体的数据项存储在列表中。本文将详细讨论Java中String转List的几种方法和示例代码。
2. 使用String的split方法
Java中的String类提供了split方法,可以根据给定的正则表达式将字符串拆分成一个字符串数组。我们可以利用这个方法将字符串按照特定的分隔符拆分成字符串数组,然后将数组转换为列表。
String text = "apple,banana,orange";
String[] fruits = text.split(",");
List<String> fruitList = Arrays.asList(fruits);
上述代码中,我们使用逗号作为分隔符将字符串”apple,banana,orange”拆分成字符串数组,然后将数组转换为列表。得到的fruitList列表包含三个元素:”apple”、”banana”和”orange”。
需要注意的是,Arrays.asList
方法返回的是一个固定大小的列表,不支持添加、删除元素的操作。如果需要在转换后的列表中进行修改操作,可以使用ArrayList
类重新构造列表:
String text = "apple,banana,orange";
String[] fruits = text.split(",");
List<String> fruitList = new ArrayList<>(Arrays.asList(fruits));
3. 使用guava库的Splitter类
Google Guava是一个流行的Java开源库,提供了许多方便的工具类。其中,Splitter
类可以用于将字符串按照指定的分隔符拆分成列表。使用Guava库需要添加相应的依赖,如下所示:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1-jre</version>
</dependency>
然后,我们可以使用Splitter
类将字符串转换为列表:
String text = "apple,banana,orange";
List<String> fruitList = Splitter.on(",").splitToList(text);
上述代码中,我们使用逗号作为分隔符,调用Splitter.on(",")
方法创建一个Splitter
对象,然后调用splitToList
方法将字符串拆分成列表。得到的fruitList列表与前面示例相同。
4. 使用StringTokenizer类
除了以上两种方法,Java中还有一种旧的方式可以将字符串转换为列表,即使用StringTokenizer
类。StringTokenizer
类可以根据指定的分隔符将字符串拆分成一个或多个标记。
String text = "apple,banana,orange";
StringTokenizer tokenizer = new StringTokenizer(text, ",");
List<String> fruitList = new ArrayList<>();
while (tokenizer.hasMoreTokens()) {
fruitList.add(tokenizer.nextToken());
}
上述代码中,我们创建一个StringTokenizer
对象,指定逗号为分隔符,然后使用while
循环逐个获取标记并添加到列表中。得到的fruitList列表与前面示例相同。
需要注意的是,StringTokenizer
类是一个遗留类(legacy class),使用时需要谨慎考虑,因为它不支持使用正则表达式作为分隔符,并且性能较差。在现代的Java应用程序中,更推荐使用前面介绍的方法。
5. 示例代码运行结果
下面是使用上述方法将字符串转换为列表的完整示例代码,你可以直接复制到Java的类文件中运行:
import com.google.common.base.Splitter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
public class StringToListExample {
public static void main(String[] args) {
// 使用String的split方法
String text1 = "apple,banana,orange";
String[] fruits1 = text1.split(",");
List<String> fruitList1 = Arrays.asList(fruits1);
System.out.println("使用String的split方法:");
System.out.println(fruitList1);
// 使用guava库的Splitter类
String text2 = "apple,banana,orange";
List<String> fruitList2 = Splitter.on(",").splitToList(text2);
System.out.println("使用guava库的Splitter类:");
System.out.println(fruitList2);
// 使用StringTokenizer类
String text3 = "apple,banana,orange";
StringTokenizer tokenizer = new StringTokenizer(text3, ",");
List<String> fruitList3 = new ArrayList<>();
while (tokenizer.hasMoreTokens()) {
fruitList3.add(tokenizer.nextToken());
}
System.out.println("使用StringTokenizer类:");
System.out.println(fruitList3);
}
}
运行上述示例代码,输出如下:
使用String的split方法:
[apple, banana, orange]
使用guava库的Splitter类:
[apple, banana, orange]
使用StringTokenizer类:
[apple, banana, orange]
6. 总结
本文介绍了在Java中将字符串转换为列表的几种常用方法。通过使用String的split方法、guava库的Splitter类或StringTokenizer类,我们可以轻松地将字符串按照指定的分隔符拆分成列表,并进行进一步的处理。需要根据具体的场景和需求选择适合的转换方式。