17 |
|
private CommonOps() {} // disable construction |
18 |
|
|
19 |
|
/** |
20 |
< |
* Returns a Comparator for Comparable objects |
20 |
> |
* Returns a Comparator for Comparable objects. |
21 |
|
*/ |
22 |
|
public static <T extends Comparable<? super T>> Comparator<T> |
23 |
|
naturalComparator(Class<T> type) { |
136 |
|
|
137 |
|
|
138 |
|
/** |
139 |
< |
* Returns a comparator for doubles relying on natural ordering |
139 |
> |
* Returns a comparator for doubles relying on natural ordering. |
140 |
|
*/ |
141 |
|
public static DoubleComparator naturalDoubleComparator() { |
142 |
|
return NaturalDoubleComparator.comparator; |
152 |
|
|
153 |
|
/** |
154 |
|
* Returns a reducer returning the maximum of two double elements, |
155 |
< |
* using natural comparator |
155 |
> |
* using natural comparator. |
156 |
|
*/ |
157 |
|
public static DoubleReducer naturalDoubleMaxReducer() { |
158 |
|
return NaturalDoubleMaxReducer.max; |
167 |
|
|
168 |
|
/** |
169 |
|
* Returns a reducer returning the minimum of two double elements, |
170 |
< |
* using natural comparator |
170 |
> |
* using natural comparator. |
171 |
|
*/ |
172 |
|
public static DoubleReducer naturalDoubleMinReducer() { |
173 |
|
return NaturalDoubleMinReducer.min; |
181 |
|
|
182 |
|
/** |
183 |
|
* Returns a reducer returning the maximum of two double elements, |
184 |
< |
* using the given comparator |
184 |
> |
* using the given comparator. |
185 |
|
*/ |
186 |
|
public static DoubleReducer doubleMaxReducer |
187 |
|
(final DoubleComparator comparator) { |
194 |
|
|
195 |
|
/** |
196 |
|
* Returns a reducer returning the minimum of two double elements, |
197 |
< |
* using the given comparator |
197 |
> |
* using the given comparator. |
198 |
|
*/ |
199 |
|
public static DoubleReducer doubleMinReducer |
200 |
|
(final DoubleComparator comparator) { |
206 |
|
} |
207 |
|
|
208 |
|
/** |
209 |
< |
* Returns a comparator for longs relying on natural ordering |
209 |
> |
* Returns a comparator for longs relying on natural ordering. |
210 |
|
*/ |
211 |
|
public static LongComparator naturalLongComparator() { |
212 |
|
return NaturalLongComparator.comparator; |
222 |
|
|
223 |
|
/** |
224 |
|
* Returns a reducer returning the maximum of two long elements, |
225 |
< |
* using natural comparator |
225 |
> |
* using natural comparator. |
226 |
|
*/ |
227 |
|
public static LongReducer naturalLongMaxReducer() { |
228 |
|
return NaturalLongMaxReducer.max; |
237 |
|
|
238 |
|
/** |
239 |
|
* A reducer returning the minimum of two long elements, |
240 |
< |
* using natural comparator |
240 |
> |
* using natural comparator. |
241 |
|
*/ |
242 |
|
public static LongReducer naturalLongMinReducer() { |
243 |
|
return NaturalLongMinReducer.min; |
251 |
|
|
252 |
|
/** |
253 |
|
* Returns a reducer returning the maximum of two long elements, |
254 |
< |
* using the given comparator |
254 |
> |
* using the given comparator. |
255 |
|
*/ |
256 |
|
public static LongReducer longMaxReducer |
257 |
|
(final LongComparator comparator) { |
264 |
|
|
265 |
|
/** |
266 |
|
* Returns a reducer returning the minimum of two long elements, |
267 |
< |
* using the given comparator |
267 |
> |
* using the given comparator. |
268 |
|
*/ |
269 |
|
public static LongReducer longMinReducer |
270 |
|
(final LongComparator comparator) { |
277 |
|
|
278 |
|
/** |
279 |
|
* Returns a composite mapper that applies a second mapper to the results |
280 |
< |
* of applying the first one |
280 |
> |
* of applying the first one. |
281 |
|
*/ |
282 |
|
public static <T,U,V> Op<T,V> compoundOp |
283 |
|
(final Op<? super T, ? extends U> first, |
289 |
|
|
290 |
|
/** |
291 |
|
* Returns a composite mapper that applies a second mapper to the results |
292 |
< |
* of applying the first one |
292 |
> |
* of applying the first one. |
293 |
|
*/ |
294 |
|
public static <T,V> Op<T,V> compoundOp |
295 |
|
(final ObjectToDouble<? super T> first, |
301 |
|
|
302 |
|
/** |
303 |
|
* Returns a composite mapper that applies a second mapper to the results |
304 |
< |
* of applying the first one |
304 |
> |
* of applying the first one. |
305 |
|
*/ |
306 |
|
public static <T,V> Op<T,V> compoundOp |
307 |
|
(final ObjectToLong<? super T> first, |
313 |
|
|
314 |
|
/** |
315 |
|
* Returns a composite mapper that applies a second mapper to the results |
316 |
< |
* of applying the first one |
316 |
> |
* of applying the first one. |
317 |
|
*/ |
318 |
|
public static <T,V> DoubleToObject<V> compoundOp |
319 |
|
(final DoubleToObject<? extends T> first, |
325 |
|
|
326 |
|
/** |
327 |
|
* Returns a composite mapper that applies a second mapper to the results |
328 |
< |
* of applying the first one |
328 |
> |
* of applying the first one. |
329 |
|
*/ |
330 |
|
public static <T,V> LongToObject<V> compoundOp |
331 |
|
(final LongToObject<? extends T> first, |
337 |
|
|
338 |
|
/** |
339 |
|
* Returns a composite mapper that applies a second mapper to the results |
340 |
< |
* of applying the first one |
340 |
> |
* of applying the first one. |
341 |
|
*/ |
342 |
|
public static <T,U> ObjectToDouble<T> compoundOp |
343 |
|
(final Op<? super T, ? extends U> first, |
349 |
|
|
350 |
|
/** |
351 |
|
* Returns a composite mapper that applies a second mapper to the results |
352 |
< |
* of applying the first one |
352 |
> |
* of applying the first one. |
353 |
|
*/ |
354 |
|
public static <T,U> ObjectToLong<T> compoundOp |
355 |
|
(final Op<? super T, ? extends U> first, |
361 |
|
|
362 |
|
/** |
363 |
|
* Returns a composite mapper that applies a second mapper to the results |
364 |
< |
* of applying the first one |
364 |
> |
* of applying the first one. |
365 |
|
*/ |
366 |
|
public static <T> ObjectToDouble<T> compoundOp |
367 |
|
(final ObjectToDouble<? super T> first, |
373 |
|
|
374 |
|
/** |
375 |
|
* Returns a composite mapper that applies a second mapper to the results |
376 |
< |
* of applying the first one |
376 |
> |
* of applying the first one. |
377 |
|
*/ |
378 |
|
public static <T> ObjectToLong<T> compoundOp |
379 |
|
(final ObjectToDouble<? super T> first, |
385 |
|
|
386 |
|
/** |
387 |
|
* Returns a composite mapper that applies a second mapper to the results |
388 |
< |
* of applying the first one |
388 |
> |
* of applying the first one. |
389 |
|
*/ |
390 |
|
public static <T> ObjectToLong<T> compoundOp |
391 |
|
(final ObjectToLong<? super T> first, |
397 |
|
|
398 |
|
/** |
399 |
|
* Returns a composite mapper that applies a second mapper to the results |
400 |
< |
* of applying the first one |
400 |
> |
* of applying the first one. |
401 |
|
*/ |
402 |
|
public static <T> ObjectToDouble<T> compoundOp |
403 |
|
(final ObjectToLong<? super T> first, |
409 |
|
|
410 |
|
/** |
411 |
|
* Returns a composite mapper that applies a second mapper to the results |
412 |
< |
* of applying the first one |
412 |
> |
* of applying the first one. |
413 |
|
*/ |
414 |
|
public static DoubleOp compoundOp |
415 |
|
(final DoubleOp first, |
421 |
|
|
422 |
|
/** |
423 |
|
* Returns a composite mapper that applies a second mapper to the results |
424 |
< |
* of applying the first one |
424 |
> |
* of applying the first one. |
425 |
|
*/ |
426 |
|
public static DoubleToLong compoundOp |
427 |
|
(final DoubleOp first, |
433 |
|
|
434 |
|
/** |
435 |
|
* Returns a composite mapper that applies a second mapper to the results |
436 |
< |
* of applying the first one |
436 |
> |
* of applying the first one. |
437 |
|
*/ |
438 |
|
public static DoubleToLong compoundOp |
439 |
|
(final DoubleToLong first, |
445 |
|
|
446 |
|
/** |
447 |
|
* Returns a composite mapper that applies a second mapper to the results |
448 |
< |
* of applying the first one |
448 |
> |
* of applying the first one. |
449 |
|
*/ |
450 |
|
public static <T> DoubleToObject<T> compoundOp |
451 |
|
(final DoubleToLong first, |
457 |
|
|
458 |
|
/** |
459 |
|
* Returns a composite mapper that applies a second mapper to the results |
460 |
< |
* of applying the first one |
460 |
> |
* of applying the first one. |
461 |
|
*/ |
462 |
|
public static <T> LongToObject<T> compoundOp |
463 |
|
(final LongToDouble first, |
469 |
|
|
470 |
|
/** |
471 |
|
* Returns a composite mapper that applies a second mapper to the results |
472 |
< |
* of applying the first one |
472 |
> |
* of applying the first one. |
473 |
|
*/ |
474 |
|
public static LongToDouble compoundOp |
475 |
|
(final LongOp first, |
481 |
|
|
482 |
|
/** |
483 |
|
* Returns a composite mapper that applies a second mapper to the results |
484 |
< |
* of applying the first one |
484 |
> |
* of applying the first one. |
485 |
|
*/ |
486 |
|
public static LongToDouble compoundOp |
487 |
|
(final LongToDouble first, |
493 |
|
|
494 |
|
/** |
495 |
|
* Returns a composite mapper that applies a second mapper to the results |
496 |
< |
* of applying the first one |
496 |
> |
* of applying the first one. |
497 |
|
*/ |
498 |
|
public static <T> DoubleToObject<T> compoundOp |
499 |
|
(final DoubleOp first, |
505 |
|
|
506 |
|
/** |
507 |
|
* Returns a composite mapper that applies a second mapper to the results |
508 |
< |
* of applying the first one |
508 |
> |
* of applying the first one. |
509 |
|
*/ |
510 |
|
public static <T> LongToObject<T> compoundOp |
511 |
|
(final LongOp first, |
517 |
|
|
518 |
|
/** |
519 |
|
* Returns a composite mapper that applies a second mapper to the results |
520 |
< |
* of applying the first one |
520 |
> |
* of applying the first one. |
521 |
|
*/ |
522 |
|
public static <T> DoubleOp compoundOp |
523 |
|
(final DoubleToObject<? extends T> first, |
529 |
|
|
530 |
|
/** |
531 |
|
* Returns a composite mapper that applies a second mapper to the results |
532 |
< |
* of applying the first one |
532 |
> |
* of applying the first one. |
533 |
|
*/ |
534 |
|
public static <T> LongToDouble compoundOp |
535 |
|
(final LongToObject<? extends T> first, |
541 |
|
|
542 |
|
/** |
543 |
|
* Returns a composite mapper that applies a second mapper to the results |
544 |
< |
* of applying the first one |
544 |
> |
* of applying the first one. |
545 |
|
*/ |
546 |
|
public static <T> DoubleToLong compoundOp |
547 |
|
(final DoubleToObject<? extends T> first, |
553 |
|
|
554 |
|
/** |
555 |
|
* Returns a composite mapper that applies a second mapper to the results |
556 |
< |
* of applying the first one |
556 |
> |
* of applying the first one. |
557 |
|
*/ |
558 |
|
public static <T> LongOp compoundOp |
559 |
|
(final LongToObject<? extends T> first, |
565 |
|
|
566 |
|
/** |
567 |
|
* Returns a composite mapper that applies a second mapper to the results |
568 |
< |
* of applying the first one |
568 |
> |
* of applying the first one. |
569 |
|
*/ |
570 |
|
public static LongOp compoundOp |
571 |
|
(final LongOp first, |
577 |
|
|
578 |
|
/** |
579 |
|
* Returns a composite mapper that applies a second mapper to the results |
580 |
< |
* of applying the first one |
580 |
> |
* of applying the first one. |
581 |
|
*/ |
582 |
|
public static DoubleOp compoundOp |
583 |
|
(final DoubleToLong first, |
589 |
|
|
590 |
|
/** |
591 |
|
* Returns a composite mapper that applies a second mapper to the results |
592 |
< |
* of applying the first one |
592 |
> |
* of applying the first one. |
593 |
|
*/ |
594 |
|
public static LongOp compoundOp |
595 |
|
(final LongToDouble first, |
600 |
|
} |
601 |
|
|
602 |
|
/** |
603 |
< |
* Returns a predicate evaluating to the negation of its contained predicate |
603 |
> |
* Returns a predicate evaluating to the negation of its contained predicate. |
604 |
|
*/ |
605 |
|
public static <T> Predicate<T> notPredicate |
606 |
|
(final Predicate<T> pred) { |
610 |
|
} |
611 |
|
|
612 |
|
/** |
613 |
< |
* Returns a predicate evaluating to the negation of its contained predicate |
613 |
> |
* Returns a predicate evaluating to the negation of its contained predicate. |
614 |
|
*/ |
615 |
|
public static DoublePredicate notPredicate |
616 |
|
(final DoublePredicate pred) { |
620 |
|
} |
621 |
|
|
622 |
|
/** |
623 |
< |
* Returns a predicate evaluating to the negation of its contained predicate |
623 |
> |
* Returns a predicate evaluating to the negation of its contained predicate. |
624 |
|
*/ |
625 |
|
public static LongPredicate notPredicate |
626 |
|
(final LongPredicate pred) { |
630 |
|
} |
631 |
|
|
632 |
|
/** |
633 |
< |
* Returns a predicate evaluating to the conjunction of its contained predicates |
633 |
> |
* Returns a predicate evaluating to the conjunction of its contained predicates. |
634 |
|
*/ |
635 |
|
public static <S, T extends S> Predicate<T> andPredicate |
636 |
|
(final Predicate<S> first, |
643 |
|
} |
644 |
|
|
645 |
|
/** |
646 |
< |
* Returns a predicate evaluating to the disjunction of its contained predicates |
646 |
> |
* Returns a predicate evaluating to the disjunction of its contained predicates. |
647 |
|
*/ |
648 |
|
public static <S, T extends S> Predicate<T> orPredicate |
649 |
|
(final Predicate<S> first, |
656 |
|
} |
657 |
|
|
658 |
|
/** |
659 |
< |
* Returns a predicate evaluating to the conjunction of its contained predicates |
659 |
> |
* Returns a predicate evaluating to the conjunction of its contained predicates. |
660 |
|
*/ |
661 |
|
public static DoublePredicate andPredicate |
662 |
|
(final DoublePredicate first, |
669 |
|
} |
670 |
|
|
671 |
|
/** |
672 |
< |
* Returns a predicate evaluating to the disjunction of its contained predicates |
672 |
> |
* Returns a predicate evaluating to the disjunction of its contained predicates. |
673 |
|
*/ |
674 |
|
public static DoublePredicate orPredicate |
675 |
|
(final DoublePredicate first, |
683 |
|
|
684 |
|
|
685 |
|
/** |
686 |
< |
* Returns a predicate evaluating to the conjunction of its contained predicates |
686 |
> |
* Returns a predicate evaluating to the conjunction of its contained predicates. |
687 |
|
*/ |
688 |
|
public static LongPredicate andPredicate |
689 |
|
(final LongPredicate first, |
696 |
|
} |
697 |
|
|
698 |
|
/** |
699 |
< |
* Returns a predicate evaluating to the disjunction of its contained predicates |
699 |
> |
* Returns a predicate evaluating to the disjunction of its contained predicates. |
700 |
|
*/ |
701 |
|
public static LongPredicate orPredicate |
702 |
|
(final LongPredicate first, |
709 |
|
} |
710 |
|
|
711 |
|
/** |
712 |
< |
* Returns a predicate evaluating to true if its argument is non-null |
712 |
> |
* Returns a predicate evaluating to true if its argument is non-null. |
713 |
|
*/ |
714 |
|
public static Predicate<Object> isNonNullPredicate() { |
715 |
|
return IsNonNullPredicate.predicate; |
723 |
|
} |
724 |
|
|
725 |
|
/** |
726 |
< |
* Returns a predicate evaluating to true if its argument is null |
726 |
> |
* Returns a predicate evaluating to true if its argument is null. |
727 |
|
*/ |
728 |
|
public static Predicate<Object> isNullPredicate() { |
729 |
|
return IsNullPredicate.predicate; |
761 |
|
} |
762 |
|
|
763 |
|
/** |
764 |
< |
* Returns a reducer that adds two double elements |
764 |
> |
* Returns a reducer that adds two double elements. |
765 |
|
*/ |
766 |
|
public static DoubleReducer doubleAdder() { return DoubleAdder.adder; } |
767 |
|
static final class DoubleAdder implements DoubleReducer { |
770 |
|
} |
771 |
|
|
772 |
|
/** |
773 |
< |
* Returns a reducer that adds two long elements |
773 |
> |
* Returns a reducer that adds two long elements. |
774 |
|
*/ |
775 |
|
public static LongReducer longAdder() { return LongAdder.adder; } |
776 |
|
static final class LongAdder implements LongReducer { |
779 |
|
} |
780 |
|
|
781 |
|
/** |
782 |
< |
* Returns a reducer that adds two int elements |
782 |
> |
* Returns a reducer that adds two int elements. |
783 |
|
*/ |
784 |
|
public static IntReducer intAdder() { return IntAdder.adder; } |
785 |
|
static final class IntAdder implements IntReducer { |
790 |
|
/** |
791 |
|
* Returns a generator producing uniform random values between |
792 |
|
* zero and one, with the same properties as {@link |
793 |
< |
* java.util.Random#nextDouble} |
793 |
> |
* java.util.Random#nextDouble}. |
794 |
|
*/ |
795 |
|
public static DoubleGenerator doubleRandom() { |
796 |
|
return DoubleRandomGenerator.generator; |
822 |
|
|
823 |
|
/** |
824 |
|
* Returns a generator producing uniform random values between the |
825 |
< |
* given least value (inclusive) and bound (exclusive) |
825 |
> |
* given least value (inclusive) and bound (exclusive). |
826 |
|
* @param least the least value returned |
827 |
|
* @param bound the upper bound (exclusive) of opd values |
828 |
|
*/ |
842 |
|
|
843 |
|
/** |
844 |
|
* Returns a generator producing uniform random values with the |
845 |
< |
* same properties as {@link java.util.Random#nextLong} |
845 |
> |
* same properties as {@link java.util.Random#nextLong}. |
846 |
|
*/ |
847 |
|
public static LongGenerator longRandom() { |
848 |
|
return LongRandomGenerator.generator; |
857 |
|
|
858 |
|
/** |
859 |
|
* Returns a generator producing uniform random values with the |
860 |
< |
* same properties as {@link java.util.Random#nextInt(int)} |
860 |
> |
* same properties as {@link java.util.Random#nextInt(int)}. |
861 |
|
* @param bound the upper bound (exclusive) of opd values |
862 |
|
*/ |
863 |
|
public static LongGenerator longRandom(long bound) { |
897 |
|
|
898 |
|
/** |
899 |
|
* Returns a generator producing uniform random values with the |
900 |
< |
* same properties as {@link java.util.Random#nextInt} |
900 |
> |
* same properties as {@link java.util.Random#nextInt}. |
901 |
|
*/ |
902 |
|
public static IntGenerator intRandom() { |
903 |
|
return IntRandomGenerator.generator; |
912 |
|
|
913 |
|
/** |
914 |
|
* Returns a generator producing uniform random values with the |
915 |
< |
* same properties as {@link java.util.Random#nextInt(int)} |
915 |
> |
* same properties as {@link java.util.Random#nextInt(int)}. |
916 |
|
* @param bound the upper bound (exclusive) of opd values |
917 |
|
*/ |
918 |
|
public static IntGenerator intRandom(int bound) { |
930 |
|
|
931 |
|
/** |
932 |
|
* Returns a generator producing uniform random values between the |
933 |
< |
* given least value (inclusive) and bound (exclusive) |
933 |
> |
* given least value (inclusive) and bound (exclusive). |
934 |
|
* @param least the least value returned |
935 |
|
* @param bound the upper bound (exclusive) of opd values |
936 |
|
*/ |
952 |
|
|
953 |
|
/** |
954 |
|
* Returns a predicate evaluating to true if the |
955 |
< |
* first argument {@code equals} the second |
955 |
> |
* first argument {@code equals} the second. |
956 |
|
*/ |
957 |
|
public static BinaryPredicate<Object, Object> equalityPredicate() { |
958 |
|
return EqualityPredicate.predicate; |
967 |
|
|
968 |
|
/** |
969 |
|
* Returns a predicate evaluating to true if the |
970 |
< |
* first argument {@code ==} the second |
970 |
> |
* first argument {@code ==} the second. |
971 |
|
*/ |
972 |
|
public static BinaryPredicate<Object, Object> identityPredicate() { |
973 |
|
return IdentityPredicate.predicate; |
982 |
|
|
983 |
|
/** |
984 |
|
* Returns a predicate evaluating to true if the |
985 |
< |
* first argument {@code ==} the second |
985 |
> |
* first argument {@code ==} the second. |
986 |
|
*/ |
987 |
|
public static BinaryIntPredicate intEqualityPredicate() { |
988 |
|
return IntEqualityPredicate.predicate; |
997 |
|
|
998 |
|
/** |
999 |
|
* Returns a predicate evaluating to true if the |
1000 |
< |
* first argument {@code ==} the second |
1000 |
> |
* first argument {@code ==} the second. |
1001 |
|
*/ |
1002 |
|
public static BinaryLongPredicate longEqualityPredicate() { |
1003 |
|
return LongEqualityPredicate.predicate; |
1012 |
|
|
1013 |
|
/** |
1014 |
|
* Returns a predicate evaluating to true if the |
1015 |
< |
* first argument {@code ==} the second |
1015 |
> |
* first argument {@code ==} the second. |
1016 |
|
*/ |
1017 |
|
public static BinaryDoublePredicate doubleEqualityPredicate() { |
1018 |
|
return DoubleEqualityPredicate.predicate; |
1028 |
|
|
1029 |
|
/** |
1030 |
|
* Returns a predicate evaluating to true if the |
1031 |
< |
* first argument {@code !equals} the second |
1031 |
> |
* first argument {@code !equals} the second. |
1032 |
|
*/ |
1033 |
|
public static BinaryPredicate<Object, Object> inequalityPredicate() { |
1034 |
|
return InequalityPredicate.predicate; |
1043 |
|
|
1044 |
|
/** |
1045 |
|
* Returns a predicate evaluating to true if the |
1046 |
< |
* first argument {@code !=} the second |
1046 |
> |
* first argument {@code !=} the second. |
1047 |
|
*/ |
1048 |
|
public static BinaryPredicate<Object, Object> nonidentityPredicate() { |
1049 |
|
return NonidentityPredicate.predicate; |
1058 |
|
|
1059 |
|
/** |
1060 |
|
* Returns a predicate evaluating to true if the |
1061 |
< |
* first argument {@code !=} the second |
1061 |
> |
* first argument {@code !=} the second. |
1062 |
|
*/ |
1063 |
|
public static BinaryIntPredicate intInequalityPredicate() { |
1064 |
|
return IntInequalityPredicate.predicate; |
1073 |
|
|
1074 |
|
/** |
1075 |
|
* Returns a predicate evaluating to true if the |
1076 |
< |
* first argument {@code ==} the second |
1076 |
> |
* first argument {@code ==} the second. |
1077 |
|
*/ |
1078 |
|
public static BinaryLongPredicate longInequalityPredicate() { |
1079 |
|
return LongInequalityPredicate.predicate; |
1088 |
|
|
1089 |
|
/** |
1090 |
|
* Returns a predicate evaluating to true if the |
1091 |
< |
* first argument {@code !=} the second |
1091 |
> |
* first argument {@code !=} the second. |
1092 |
|
*/ |
1093 |
|
public static BinaryDoublePredicate doubleInequalityPredicate() { |
1094 |
|
return DoubleInequalityPredicate.predicate; |