1 33 package net.sf.jga.util; 34 35 import java.util.Arrays ; 36 import java.util.Collection ; 37 import java.util.Comparator ; 38 import java.util.Iterator ; 39 import net.sf.jga.algorithms.Filter; 40 import net.sf.jga.algorithms.Merge; 41 import net.sf.jga.algorithms.Transform; 42 import net.sf.jga.algorithms.Unique; 43 import net.sf.jga.fn.BinaryFunctor; 44 import net.sf.jga.fn.UnaryFunctor; 45 46 import static net.sf.jga.util.ArrayUtils.*; 47 48 57 58 public class Iterables { 59 63 static public <T> Iterable <Iterator <? extends T>> 64 findAll(Iterable <? extends T> i, UnaryFunctor<Iterator <? extends T>, ? extends Iterator <T>> fn) { 65 return new FindAllIterator<T>(i.iterator(), fn); 66 } 67 68 69 73 static public <T> Iterable <Iterator <? extends T>> 74 findAll(T[] ts, UnaryFunctor<Iterator <? extends T>, ? extends Iterator <T>> fn) { 75 return new FindAllIterator<T>(iterate(ts), fn); 76 } 77 78 79 83 static public <T> Iterable <T> filter(Iterable <? extends T> i, UnaryFunctor<T,Boolean > pred) { 84 return Filter.filter(i, pred); 85 } 86 87 88 92 static public <T> Iterable <T> filter(T[] ts, UnaryFunctor<T,Boolean > pred) { 93 return Filter.filter(ts, pred); 94 } 95 96 97 102 static public <T extends Comparable <T>> Iterable <T> 103 merge(Iterable <? extends T> i1, Iterable <? extends T> i2) { 104 return Merge.merge(i1, i2); 105 } 106 107 108 113 static public <T extends Comparable <T>> Iterable <T> merge(T[] ts1, T[] ts2) { 114 return Merge.merge(ts1, ts2); 115 } 116 117 118 123 static public <T> Iterable <T> 124 merge(Iterable <? extends T> i1,Iterable <? extends T> i2,Comparator <T> comp) { 125 return Merge.merge(i1, i2, comp); 126 } 127 128 129 134 static public <T> Iterable <T> merge(T[] ts1, T[] ts2, Comparator <T> comp) { 135 return Merge.merge(ts1, ts2, comp); 136 } 137 138 139 147 static public <T> Iterable <T> 148 merge(Iterable <? extends T> i1, Iterable <? extends T> i2, BinaryFunctor<T,T,Boolean > fn) { 149 return Merge.merge(i1, i2, fn); 150 } 151 152 153 161 static public <T> Iterable <T> merge(T[] ts1, T[] ts2, BinaryFunctor<T,T,Boolean > fn) { 162 return Merge.merge(ts1, ts2, fn); 163 } 164 165 166 170 static public <T,R> Iterable <R> transform(Iterable <? extends T> i, UnaryFunctor<T,R> fn) { 171 return Transform.transform(i, fn); 172 } 173 174 175 179 static public <T,R> Iterable <R> transform(T[] ts, UnaryFunctor<T,R> fn) { 180 return Transform.transform(ts, fn); 181 } 182 183 184 188 static public <T1,T2,R> Iterable <R> 189 transform(Iterable <? extends T1> i1, Iterable <? extends T2>i2, BinaryFunctor<T1,T2,R> fn) { 190 return Transform.transform(i1, i2, fn); 191 } 192 193 194 198 static public <T1,T2,R> Iterable <R> transform(T1[] ts1, T2[] ts2, BinaryFunctor<T1,T2,R> fn) { 199 return Transform.transform(ts1, ts2, fn); 200 } 201 202 203 207 static public <T,R> Iterable <R> transform(Iterable <? extends T> i, BinaryFunctor<T,T,R> fn) { 208 return Transform.transform(i, fn); 209 } 210 211 212 216 static public <T,R> Iterable <R> transform(T[] ts, BinaryFunctor<T,T,R> fn) { 217 return Transform.transform(ts, fn); 218 } 219 220 221 226 static public <T> Iterable <T> unique(Iterable <? extends T> i) { 227 return Unique.unique(i); 228 } 229 230 231 236 static public <T> Iterable <T> unique(T[] ts) { 237 return Unique.unique(ts); 238 } 239 240 241 247 static public <T> Iterable <T> unique(Iterable <? extends T> i, BinaryFunctor<T,T,Boolean > eq) { 248 return Unique.unique(i, eq); 249 } 250 251 252 258 static public <T> Iterable <T> unique(T[] ts, BinaryFunctor<T,T,Boolean > eq) { 259 return Unique.unique(ts, eq); 260 } 261 262 263 270 static public <T> boolean addAll(Collection <? super T> cout, Iterable <T> iter) { 271 return CollectionUtils.addAll(cout, iter.iterator()); 272 } 273 274 275 282 static public <T> boolean addAll(Collection <? super T> cout, T[] ts) { 283 return CollectionUtils.addAll(cout, ts); 284 } 285 286 293 static public <T> Collection <? super T> append(Collection <? super T> cout, Iterable <T> iter) { 294 return CollectionUtils.append(cout, iter.iterator()); 295 } 296 297 298 305 static public <T> Collection <? super T> append(Collection <? super T> cout, T[] ts) { 306 return CollectionUtils.append(cout, ts); 307 } 308 } 309 | Popular Tags |