import java.util.ArrayList; public class Unique { private boolean memberOf2(int x, ArrayList list) { if (list.size() == 0) return false; else { int first = list.get(0); list.remove(0); return (x == first) || memberOf2(x, list); } } private boolean memberOf(int x, ArrayList list) { ArrayList temp = (ArrayList) list.clone(); return memberOf2(x, temp); } private ArrayList unique(ArrayList list) { if (list.size() <= 1) return list; else { int first = list.get(0); list.remove(0); ArrayList ulist = unique(list); // rest of list if (memberOf(first, ulist)) return ulist; else { ulist.add(0, first); // put back the first element return ulist; } } } public static void main(String args[]) { Unique u = new Unique(); ArrayList numbers = new ArrayList(); numbers.add(4); numbers.add(3); numbers.add(1); numbers.add(2); numbers.add(4); numbers.add(2); numbers.add(4); numbers.add(5); System.out.print("Original list:"); for (Integer i : numbers) System.out.printf("%2d", i); System.out.println(); numbers = u.unique(numbers); System.out.print(" Unique list:"); for (Integer i : numbers) System.out.printf("%2d", i); System.out.println(); } }