Java:将集合转换为数组以实现字符串表示

2022-09-01 09:43:10

从Sun的Java教程中,我本来以为这段代码会将一个集合转换为数组。

import java.util.*;

public class Blagh {
    public static void main(String[] args) {
        Set<String> set = new HashSet<String>();
        set.add("a");
        set.add("b");
        set.add("c");
        String[] array = set.toArray(new String[0]);
        System.out.println(set);
        System.out.println(array);
    }
}

但是,这给出了

[a, c, b]
[Ljava.lang.String;@9b49e6

我误解了什么?


答案 1

代码工作正常。

取代:

System.out.println(array);

跟:

System.out.println(Arrays.toString(array));

输出:

[b, c, a]
[b, c, a]

数组的表示形式显示数组的“文本表示形式”,由 Object.toString 获取 -- 它是作为十六进制字符串的数组的类名和哈希代码。String


答案 2

为了完整性检查,还要检查java.util.Arrays.toStringjava.util.Arrays.deepToString

后者在处理嵌套数组(如 Object[][])时特别有用。