Friday, July 18, 2014

Using HashSet to remove duplicates

Problem Statement :

Is it possible to remove the duplicates in an array of integers in a single iteration for an unsorted array


import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class Test {

    public static void main(String[] args) {
        int[] array = new int[] { 4, 2, 5, 8, 9, 90, 5, 4, 2343, 4, 3434, 4343,
                4, 2, 1, 2, 4, 5, 4, 5, 644, 65656, 654, 6 };

        Set<Integer> set = new HashSet<Integer>();
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();

        for (int _int : array) {
            
            boolean exists = set.add(_int);
            
            if (!exists) {
                Integer existing = map.get(_int);                
                map.put(_int, existing == null ? 2 : (existing = existing + 1));
            }
        }

        System.out.println(set);
        System.out.println(map);

    }

}
Output
[1, 2, 654, 4, 5, 6, 3434, 2343, 8, 9, 644, 65656, 4343, 90]
{2=3, 4=6, 5=4}

No comments:

Post a Comment