用于循环来访问HashSet(Java)中的所有元素?

时间:2016-10-10 03:31:18

标签: java loops for-loop hashset

我把代码编写为:

public class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        HashSet<Integer> has1 = new HashSet(Arrays.asList(nums1)); 
        for (int i: has1)
            System.out.println(i);
        return nums1;
    }
}

num1: [1,2,4,2,3]
num2: [4,5,6,3]

在for循环中,它显示java.lang.ClassCastException: [I cannot be cast to java.lang.Integer

2 个答案:

答案 0 :(得分:5)

你不能直接这样做,但你需要更喜欢间接方法

int[] a = { 1, 2, 3, 4 };
        Set<Integer> set = new HashSet<>();
        for (int value : a) {
            set.add(value);
        }
        for (Integer i : set) {
            System.out.println(i);
        }

使用Java 8

 1) Set<Integer> newSet = IntStream.of(a).boxed().collect(Collectors.toSet());//recomended

    2)  IntStream.of(a).boxed().forEach(i-> System.out.println(i)); //applicable

这里首先foreach对你来说已经足够了。如果你想按套装去,那就去第二个for循环

答案 1 :(得分:0)

您的集合包含Integer个对象,因此在迭代foreach循环时,您应该编写for (Integer i : collection) - 这是因为基本类型int没有自己的Iterator实施