为什么迭代器打印哈希码不是实际值?

时间:2018-08-16 12:58:27

标签: java iterator

public static void main(String[] args) {
    int[] array = { 1, 2, 3, 4, 5 };

    List<int[]> list = Arrays.asList(array);

    Iterator<int[]> it = list.iterator();
    while (it.hasNext()) {
        System.out.println(it.next());
    }
}

2 个答案:

答案 0 :(得分:2)

您要查找的是List<Integer>,而不是List<int[]>

//easier and more common way to build a List<Integer>
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);

Iterator<Integer> it2 = list1.iterator();
while (it2.hasNext()) {
    System.out.println(it.next());
}

或者,您可以将数组声明为Integer[]并使用相同的代码:

Integer[] array = { 1, 2, 3, 4, 5 };

List<Integer> list = Arrays.asList(array);

Iterator<Integer> it = list.iterator();
while (it.hasNext()) {
    System.out.println(it.next());
}

答案 1 :(得分:0)

您声明一个列表,其元素是int类型的数组。

List<int[]> list = Arrays.asList(array);

现在使用迭代器时:

while (it.hasNext()) {
    System.out.println(it.next()); // it.next() returns an int[]
}

因此it.next()给我们一个类型为int[]的数组,并且在其上调用了toString(),它仅返回数组哈希码。 但是,如果您添加

System.out.println(Arrays.toString(it.next()));

您会看到数组的上下文。但这不是您可能想要的,您所需要做的只是将iteratorlist类型更改为<Integer>而不是ernest_k答案中所述的int[]