1

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

6
  • already answered stackoverflow.com/questions/12455737/… Commented Oct 10, 2016 at 3:33
  • int and Integer are not the same type. Fix the type in the for and it should work. Commented Oct 10, 2016 at 3:34
  • Yes, thank you! I have write this code based on the idea. However there is an error in my code. I want to know how to fix it. Commented Oct 10, 2016 at 3:35
  • You need something like new HashSet<>(IntStream.of(nums1).boxed().collect(Collectors.toList())), you're currently getting a HashSet<int[]> and using a raw-type so you're also ignoring a warning. Commented Oct 10, 2016 at 3:35
  • @4castle Raw types. Commented Oct 10, 2016 at 3:37

2 Answers 2

5

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

Sign up to request clarification or add additional context in comments.

Comments

0

Your collection is containing Integer objects, so while iterating through foreach loop, you should write for (Integer i : collection) - that is because primitive type int do not have its own Iterator implementation.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.