Java Collection How to - Create List to store only unique values








Question

We would like to know how to create List to store only unique values.

Answer

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
/* w  w w  .  ja va 2  s .  c  o m*/
class UniqueList {
  private HashSet masterSet = new HashSet();
  private ArrayList innerList;
  private Object[] returnable;

  public UniqueList() {
    innerList = new ArrayList();
  }

  public UniqueList(int size) {
    innerList = new ArrayList(size);
  }

  public void add(Object thing) {
    if (!masterSet.contains(thing)) {
      masterSet.add(thing);
      innerList.add(thing);
    }
  }
  public List getList() {
    return innerList;
  }

  public Object get(int index) {
    return innerList.get(index);
  }

  public Object[] toObjectArray() {
    int size = innerList.size();
    returnable = new Object[size];
    for (int i = 0; i < size; i++) {
      returnable[i] = innerList.get(i);
    }
    return returnable;
  }
}

public class Main {
  public static void main(String[] args) {
    UniqueList ul = new UniqueList();
    ul.add("Test");
    ul.add("Test");
    ul.add("Not a copy");
    ul.add("Test");
    Object[] content = ul.toObjectArray();
    System.out.println(Arrays.toString(content));
  }
}

The code above generates the following result.