You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSV文件按第17列分组后输出异常的问题求助及解决

问题:CSV分组后输出异常的[Ljava.lang.String;@xxxxxx内容

我在读取CSV文件时,希望按第17列对记录进行分组,将每个键对应的所有行以列表/数组形式展示,但得到了一堆类似[Ljava.lang.String;@7a46a697的异常输出。

原代码

void read_CSV_file(String path ) {
 Stream<String > file_data_by_lines = null;
 try {
 file_data_by_lines = Files.lines(Paths.get(path)) ;
 } catch (IOException e) {
 e.printStackTrace();
 }
 Map temp =file_data_by_lines.map(x-> (x.split(",")))
 .collect( Collectors.groupingBy(x-> x[17], Collectors.toSet()));
 temp.values().stream().forEach(System.out::println);
}

当前异常输出

[[Ljava.lang.String;@7a46a697, [Ljava.lang.String;@6d86b085, [Ljava.lang.String;@68f7aae2, [Ljava.lang.String;@4141d797, [Ljava.lang.String;@5f205aa, [Ljava.lang.String;@7530d0a, [Ljava.lang.String;@2a3046da, [Ljava.lang.String;@75828a0f, [Ljava.lang.String;@2f410acf]
[[Ljava.lang.String;@2401f4c3, [Ljava.lang.String;@3b6eb2ec, [Ljava.lang.String;@2d363fb3, [Ljava.lang.String;@21bcffb5, [Ljava.lang.String;@566776ad, [Ljava.lang.String;@34c45dca, [[Ljava.lang.String;@1d251891, [Ljava.lang.String;@1edf1c96]
[[Ljava.lang.String;@28f67ac7, [Ljava.lang.String;@129a8472]

问题原因

出现这种输出是因为Java中数组的默认toString()方法不会打印数组内容,而是返回数组的对象标识(哈希码)。你的分组结果中,每个值都是String[]的集合,直接调用System.out::println打印这些数组时,就会输出这种看起来像乱码的格式。

解决方法

使用Arrays.deepToString()方法将数组转换为可读的字符串格式,修改遍历输出的代码即可:

temp.values().stream().forEach(x-> System.out.println(Arrays.deepToString(x.toArray())));

Arrays.deepToString()可以处理嵌套数组(这里虽然是一维数组,但该方法同样适用),会把数组中的元素逐一打印出来,得到清晰的分组内容。

内容的提问来源于stack exchange,提问作者Nil Kulkarni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 10:37:36