网站首页 > 精选教程 正文
在本快速指南中,我们将会解释如何在 Java 把一个 List 转换为 String 字符串。
这个在某些特定的场合可能比较有用,比如说在控制台中输出 List 中的内容,转换为可以人为阅读的内容来进行调试。
使用 List 中标准的toString() 方法
一个最简单的方法就是调用 List 中的 toString() 方法:
@Test
public void whenListToString_thenPrintDefault() {
List<Integer> intLIst = Arrays.asList(1, 2, 3);
System.out.println(intLIst);
}
上面的代码将会输出:
[1, 2, 3]
从技术上来说,上面的方法将会针对 List 中的每一个对象调用 toString() 方法来进行输出。
在上面的代码中,我们将会使用 Integer 类型的 toString() 方法来把元素中的内容来进行输出。
但是,这里会有一个问,如果你的 List 中使用的是自定义的对象的话,例如我们自定义一个 Person 对象,那么在输出的时候,你需要在 Person 对象中重写(override) toString() 这个方法,而不能使用默认的 toString() 方法。
如果你不这样做的话,你在控制台上大概率会看到下面输出内容:
[org.baeldung.java.lists.ListToSTring$Person@1edf1c96,
org.baeldung.java.lists.ListToSTring$Person@368102c8,
org.baeldung.java.lists.ListToSTring$Person@6996db8]
- java.lang.Object - 类名
- @ - 符号
- d716361 - 哈希值的十六进制值
上面的数字不是你对象的实际内容,而是对象的十六进制哈希值。
使用 Collectors 的自定义实现
有时候,我们希望我们的输出使用特定的格式。
对比上面的例子,我们希望在输出的值之间使用 comma (,) hyphen (-), 或者方括号 ([, ]) 或者 braces ({, }) 来进行输出:
@Test
public void whenCollectorsJoining_thenPrintCustom() {
List<Integer> intList = Arrays.asList(1, 2, 3);
String result = intList.stream()
.map(n -> String.valueOf(n))
.collect(Collectors.joining("-", "{", "}"));
System.out.println(result);
}
上面代码输出的内容为:
{1-2-3}
Collectors.joining() 方法需要一个 CharSequence,所以我们可以把数组对象中的整数转换为 String。
同时我们可以看到上面的方法使用了 Java 8 开始提供的 Stream,我们可以使用上面 Stream 的方法来对对象中内容进行输出。
其实主要理解就是使用了 Stream 方法,然后对 List 中的对象进行遍历。
使用其他外部类
我们还可以使用 Apache Commons’ StringUtils 类来得到同样的结果。
Maven 依赖
首先需要确保你的项目中有下面的依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
实现
实现的方法也非常简单,就是使用 StringUtils.join 就可以了。
@Test
public void whenStringUtilsJoin_thenPrintCustom() {
List<Integer> intList = Arrays.asList(1, 2, 3);
System.out.println(StringUtils.join(intList, "|"));
}
输出
1|2|3
需要注意的是,就算你使用了 StringUtils.join 方法,这个方法也还是使用的是对象内部的 toString() 方法。
如果不对自有对象的 toString() 重写(override)进行重写的话,你还是可能得到的是对象的哈希值而不是对象中具体的内容。
结论
本文对如何在 Java 中对 List 中的内容进行 String 转换并且输出进行了简单的说明。
需要注意的是对 toString() 方法,在某些时候需要进行重写(override)以便于得到正确的值。
猜你喜欢
- 2024-11-03 4.5 Java的字符串操作和方法 java字符串使用教学
- 2024-11-03 一文教你Java字符串处理(String,StringBuffer...
- 2024-11-03 「Java工具类」Jackson工具类,json字符串转各种对象或者集合
- 2024-11-03 java int类型转char类型总结 java将int转换为char
- 2024-11-03 《JAVA编程思想》5分钟速成:第13章(字符串)
- 2024-11-03 Java字符串操作的函数式方法 java中字符串的操作
- 2024-11-03 Java基于代码实战的字符流父类、字符转换流、缓冲字符流、过滤流
- 2024-11-03 7. 反转整数(LeetCode 题解) 反转整数python
- 2024-11-03 JAVA 基本类型之间的转换(新手) java基础类型转换
- 2024-11-03 Java读取制表符文本转换为JSON java读取表格
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)