Java tutorial
/* * 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; } }