Java 把一个 List 转换为字符串

Posted huyuchengus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 把一个 List 转换为字符串相关的知识,希望对你有一定的参考价值。

在本快速指南中,我们将会解释如何在 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)以便于得到正确的值。

 

https://www.ossez.com/t/java-list/14427

JAVA,List数组的转换

我现在有[73, 71, 61] 的list,怎么变成73,71,61就是把中括号去掉

import java.util.ArrayList;
import java.util.List;

public class Admin

public static void main(String... args)
List data = new ArrayList();
data.add("1");
data.add("2");
data.add("3");
System.out.println(data);

String str = data.toString();
str = str.replace("[", "");
str = str.replace("]", "");
System.out.println(str);



输出结果:

[1, 2, 3]
1, 2, 3
参考技术A 不知道你的意思是将list转为数组?
直接list.toArray()就好了追问

数组输出之后是[1,2,3]这样的 ,我想要 1,2,3 这样的 ,就是不要中括号

追答

[1,2,3]是list集合 数组打印是个对象
你如果想在控制台打印出1,2,3这样的可以循环取出,不太明白LZ这样干的目的
给你这个看看是否是你要的效果:
import java.util.ArrayList;
import java.util.List;

public class Test

public static void main(String[] args) throws Exception
List list = new ArrayList();
list.add(73);
list.add(71);
list.add(61);
for(int i=0 ; i <list.size() ; i++)
System.out.print(list.get(i));
if(i != (list.size()-1))
System.out.print(",");



参考技术B List list = new ArrayList();
list.add("73");
list.add("71");
list.add("61");
String temp = "";
for (int i = 0; i < list.size(); i++)
temp += list.get(i).toString();
if(list.size()-1!=i)
temp += ",";


System.out.println(temp);追问

奇怪 出来没有逗号

追答

最后一个不是不要逗号?有二个逗号。。。最后一个没有的。。 你要全部有逗号的话,把那个if判断去掉就好了。

本回答被提问者采纳

以上是关于Java 把一个 List 转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

java 怎么把对象集合转换成json

JAVA,List数组的转换

java中图像与数组转换

java中,如何把一个字符串转换成数组?

JSON的String字符串与Java的List列表对象的相互转换

JAVA/ANDROID 数组转换为LIST