如果没有指定方法 toArray,如何使用 toArray() 将 hash Set 转换为数组?

2022-09-02 11:34:52

看看java api for java collections framework,我在HashSet中找不到toArray()方法,抽象类Set中有toArray()方法。

class Ideone {
    public static void main (String[] args) throws java.lang.Exception {
        Set x = new HashSet();
        x.add(4);
        //ArrayList<Integer> y = x.toArray(); this does not work !
        int[] y = x.toArray();//this does not work!

        System.out.println(x.toArray());//this gives some weird stuff printed : Ljava.lang.Object;@106d69c
    }
}

如果没有指定 toArray() 如何将哈希集转换为数组?


答案 1

当然实现.它必须实现它,因为它实现了指定此方法的接口。实际实现是 其中的超类是 的超类。HashSettoArraySetAbstractCollectionAbstractSetHashSet

首先,您不应该使用原始类型。

用:

Set<Integer> x = new HashSet<>();
x.add(4);

然后转换为数组:

Integer[] arr = x.toArray(new Integer[x.size()]);

使用会给你一个.x.toArray()Object[]


答案 2

确保为HashSet

Set<Integer> x = new HashSet<>();

并将其转换为数组,如下所示:

int[] y = new int[x.size()];
int c = 0;
for(int x : x) y[c++] = x;