1 package net.sf.jga.fn.algorithm; 33 34 import java.util.Iterator ; 35 import net.sf.jga.fn.BinaryFunctor; 36 import net.sf.jga.fn.UnaryFunctor; 37 import net.sf.jga.fn.comparison.EqualTo; 38 import net.sf.jga.util.UniqueIterator; 39 40 49 50 public class Unique<T> extends UnaryFunctor<Iterator <? extends T>, UniqueIterator<T>> { 51 52 static final long serialVersionUID = 603897787127100783L; 53 54 private BinaryFunctor<T,T,Boolean > _fn; 55 56 61 public Unique() { 62 this(new EqualTo<T>()); 63 } 64 65 71 public Unique(BinaryFunctor<T,T,Boolean > test) { 72 if (test == null) 73 throw new IllegalArgumentException (); 74 75 _fn = test; 76 } 77 78 81 public BinaryFunctor<T,T,Boolean > getFunction() { 82 return _fn; 83 } 84 85 91 public UniqueIterator<T> fn(Iterator <? extends T> iterator) { 92 return new UniqueIterator<T>(iterator, _fn); 93 } 94 95 99 public void accept(net.sf.jga.fn.Visitor v) { 100 if (v instanceof Unique.Visitor) 101 ((Unique.Visitor)v).visit(this); 102 else 103 v.visit(this); 104 } 105 106 108 public String toString() { 109 return "Unique["+_fn+"]"; 110 } 111 112 114 117 public interface Visitor extends net.sf.jga.fn.Visitor { 118 public void visit(Unique host); 119 } 120 } 121 | Popular Tags |