1 package net.sf.jga.fn.algorithm; 33 34 import java.util.Comparator ; 35 import java.util.Iterator ; 36 import net.sf.jga.fn.BinaryFunctor; 37 import net.sf.jga.util.MergeIterator; 38 39 50 51 public class Merge<T> 52 extends BinaryFunctor<Iterator <? extends T>, Iterator <? extends T>, 53 MergeIterator<T>> 54 { 55 static final long serialVersionUID = 1680420131592467899L; 56 57 private Comparator <T> _comp; 58 59 64 public Merge(Comparator <T> comp) { 65 if (comp == null) 66 throw new IllegalArgumentException (); 67 68 _comp = comp; 69 } 70 71 74 public Comparator <T> getComparator() { 75 return _comp; 76 } 77 78 84 public MergeIterator<T> fn(Iterator <? extends T> iter1, 85 Iterator <? extends T> iter2) 86 { 87 return new MergeIterator<T>(iter1, iter2, _comp); 88 } 89 90 94 public void accept(net.sf.jga.fn.Visitor v) { 95 if (v instanceof Merge.Visitor) 96 ((Merge.Visitor)v).visit(this); 97 else 98 v.visit(this); 99 } 100 101 103 public String toString() { 104 return "Merge"; 105 } 106 107 109 112 public interface Visitor extends net.sf.jga.fn.Visitor { 113 public void visit(Merge host); 114 } 115 } 116 | Popular Tags |