-3

I want to remove the full row which is duplicating. I have used Hashmap to remove the duplicates in an arraylist but it is still duplicating. Please help me. Thank You in advance.

  ArrayList<Act2010> act2010DataList = AtusAct2010Parser.hm;
    ArrayList<Who2010> whoList =  AtusWho2010Parser.hm;
   HashMap<String, AtusRecords> hm = new HashMap<String, AtusRecords>();
   for(int i=0; i<whoList.size(); i++){
        hm.put(whoList.get(i).getStringId(), whoList.get(i));
    }
    for(int i=0; i<act2010DataList.size(); i++){
        hm.put(act2010DataList.get(i).getStringId(), act2010DataList.get(i));
    }
   Iterator<String> it = hm.keySet().iterator();

    while(it.hasNext()){
        String key = it.next();
        AtusRecords record = hm.get(key);}
learner
  • 11
  • 1
  • Use Set https://docs.oracle.com/javase/7/docs/api/java/util/Set.html – Balram May 06 '16 at 11:20
  • [Easiest way to convert a List to a Set? - Java](http://stackoverflow.com/questions/1429860/easiest-way-to-convert-a-list-to-a-set-java) – MrSimpleMind May 06 '16 at 11:23
  • While using set its not working as its still duplicating and printing randomly. That is why I used HashMap. – learner May 06 '16 at 11:33

2 Answers2

1

The more natural way to avoid/filter duplicates is using a Set, it can work with any primitive or even custom objects implementing equals():

List<String> myListWithDuplicates = new ArrayList<String>();
myListWithDuplicates.add("apple");
myListWithDuplicates.add("peach");
myListWithDuplicates.add("mango");
myListWithDuplicates.add("banana");
myListWithDuplicates.add("apple");
myListWithDuplicates.add("apple");

List<String> listWithoutDuplicates = new ArrayList<String>(new HashSet<String>(myListWithDuplicates));


System.out.println("list with duplicates: "+ myListWithDuplicates);
System.out.println("List without duplicates: "+ listWithoutDuplicates);

enjoy

Mosd
  • 1,640
  • 19
  • 22
0

I think you have arraylist like

("A", "1");
    ("B", "2");
    ("C", "2");
    ("A", "1");
    ("C", "3");

And Your answer will be like ,

    ("A", "1");
    ("B", "2");
    ("C", "2");
    ("C", "3");

ArrayList<T> original = ...
List<T> uniques = new ArrayList<T>();
for (T element : original) {
  if (!uniques.contains(element)) {
    uniques.add(element);
  }
}
Ariful Haque
  • 878
  • 9
  • 11