简体   繁体   中英

use for loop to visit all elements in a HashSet (Java)?

I have write the code as:

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]

On the for loop it says java.lang.ClassCastException: [I cannot be cast to java.lang.Integer

you cannot do this directly but you need to prefer a indirect approach

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);
        }

using 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

here first foreach is sufficient for you and If you want to go by set, go with second for loop

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM