RedundancyChecker.java Source code

Java tutorial

Introduction

Here is the source code for RedundancyChecker.java

Source

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