If only one element in a hashset, how can I get it out?

hashset, java, set

Solution

Simply try using `HashSet#toArray()` method

HashSet<Integer> set = new HashSet<Integer>();
set.add(1);

if (set.size() == 1) { // make sure that there is only one element in set
    Integer value = set.toArray(new Integer[1])[0];
    System.out.println(value);//output 1
}

Problem

I have a `set` like below: ``` HashSet<Integer> set = new HashSet<Integer>(); set.add(1); ``` How can I get the `1` out? I can do it by `for(integer i : set)`. My specified problem is "Given an array of integers, every element appears twice except for one. Find that single one." I want to use add elements into the set if the set doesn't contain it and remove existing elements during the loop. And the last remaining element is the answer. I don't know how to return it. ``` public static int singleNumber(int[] A) { HashSet<Integer> set = new HashSet<>(); for (int a : A) { if (!set.contains(a)) { set.add(a); } else { set.remove(a); } } /** * for(Integer i : set) { return i; } *return A[0]; //need one useless return /** * while(set.iterator().hasNext()) { return set.iterator().next(); } * return A[0]; //need one useless return */ return set.toArray(new Integer[1])[0]; } ```

Original source