Java中如何打印包含字符串数组的List集合?
嗨,这个问题我之前在项目里也踩过坑!直接打印List<String[]>看不到数组内容,是因为Java里数组的默认toString()方法并不会输出元素,只会返回它的类型和内存哈希码(比如[Ljava.lang.String;@xxxxxx)。下面给你几种简单的解决办法:
方案1:逐个遍历数组打印
最直观的方式就是循环遍历List里的每个字符串数组,用Arrays.toString()方法来输出数组的实际内容:
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class TestPrintList { public static void main(String[] args) { String[] anArray = {"apple", "banana", "cherry"}; String[] anArray2 = {"date", "elderberry"}; List<String[]> kList = new ArrayList<>(); kList.add(anArray); kList.add(anArray2); // 遍历每个数组并打印 for (String[] arr : kList) { System.out.println(Arrays.toString(arr)); } } }
运行后会输出:
[apple, banana, cherry]
[date, elderberry]
方案2:用Stream API简化代码(Java 8+)
如果你的项目用Java 8及以上,可以用Stream API一行搞定,代码更简洁:
// 用Stream映射每个数组为可读字符串,然后打印 kList.stream() .map(Arrays::toString) .forEach(System.out::println);
效果和方案1完全一样,只是写法更优雅。
方案3:把整个List格式化为一个字符串打印
要是你想把整个List的内容以类似[[元素1,元素2], [元素3,元素4]]的形式一次性输出,可以用Stream结合Collectors来拼接:
import java.util.stream.Collectors; // 格式化整个List为一个字符串 String formattedList = kList.stream() .map(Arrays::toString) .collect(Collectors.joining(", ", "[", "]")); System.out.println(formattedList);
运行后会输出:
[[apple, banana, cherry], [date, elderberry]]
核心原理就是:Arrays.toString()方法会帮我们遍历数组的每个元素,把它们拼接成人类可读的字符串,而不是用数组默认的哈希码输出。
内容的提问来源于stack exchange,提问作者Sara Shall
相关产品推荐
相关产品推荐

