Collections Data Structure Java

/*
 *        Code by David Beuze. No rights reserved :) - 2006
 *
 *        contact: smerpy@gmail.com
 */
/*
 *        This code snippet takes a list of objects and checks for any redundancy in the list.
 *        In this example I've taken a list of Integer, but it can be generalized to any kind
 *        of object.
 */
/*Output:
 * 
 * Oh no! The value 1 is redundant.
 * 
 * */
import java.util.Arrays;
import java.util.List;
import java.util.ListIterator;
public class RedundancyChecker {
  public static void main(String[] a) {
    new RedundancyChecker();
  }
  public RedundancyChecker() {
    Integer[] array = new Integer[5]; // Create and
    // array of
    // Integer
    Integer i0 = new Integer(0);
    array[0] = i0;
    Integer i1 = new Integer(1); // <--------
    array[1] = i1; // |
    Integer i2 = new Integer(2); // |--- redundant
    // values
    array[2] = i2; // |
    Integer i3 = new Integer(1); // <--------
    array[3] = i3;
    Integer i4 = new Integer(4);
    array[4] = i4;
    // transform the array into a List
    List l = Arrays.asList(array);
    // Check the List
    checkForRedundancy(l);
  }
  public boolean checkForRedundancy(List l) {
    ListIterator li1 = l.listIterator(); // Make a
    // general
    // ListIterator
    // on the list
    while (li1.hasNext()) {
      // Store the value of the actual first checked
      // element of the List,
      // it needs to be stored because it calls the
      // .next(), which we can call only once per loop
      // in order to sweep the whole list.
      int check1 = ((Integer) li1.next()).intValue();
      // Make a second ListIterator that will start
      // with the element that is just after the
      // actual first checked one,
      // in order to avoid checking several times the
      // same elements.
      ListIterator li2 = l.listIterator(li1.nextIndex() + 1);
      while (li2.hasNext()) {
        // Store the following elements one by
        // one and check to see if they match
        // the actual one.
        int check2 = ((Integer) li2.next()).intValue();
        if (check1 == check2) {
          System.out.println("Oh no! The value " + check1 + " is redundant.");
          return true;
        }
      }
      // The .next() method has already been called at
      // the beginning of the loop.
    }
    return false;
  }
}