/** * Override of {@link #select(Predicate, Mapper, Mapper)} where rejected values are replaced * with null. */ public static <S, T> Mapper<S, T> select(Predicate<? super S> predicate, Mapper<S, T> ifAccepted) { return select(predicate, ifAccepted, (T) null); }
/** * Override of {@link #select(Predicate, Mapper, Mapper)} where rejected values are replaced * with null. */ public static <S, T> Mapper<S, T> select(Predicate<? super S> predicate, Mapper<S, T> ifAccepted) { return select(predicate, ifAccepted, (T) null); }
/** * Override of {@link #select(Predicate, Mapper)} where rejected values are replaced with a * fixed value. */ public static <S, T> Mapper<S, T> select(Predicate<? super S> predicate, Mapper<S, T> ifAccepted, T ifRejectedValue) { Mapper<S, T> rejectedMapper = always(ifRejectedValue); return select(predicate, ifAccepted, rejectedMapper); }
/** * Override of {@link #select(Predicate, Mapper)} where rejected values are replaced with a * fixed value. */ public static <S, T> Mapper<S, T> select(Predicate<? super S> predicate, Mapper<S, T> ifAccepted, T ifRejectedValue) { Mapper<S, T> rejectedMapper = always(ifRejectedValue); return select(predicate, ifAccepted, rejectedMapper); }
@Test public void select_and_filter() { Predicate<String> combinedp = F.toPredicate(F.combine(stringToLength, toEven)); Mapper<String, String> identity = F.identity(); Predicate<String> isNull = F.isNull(); // Converting to null and then filtering out nulls is the hard way to do filter or remove, // but exercises the code we want to test. List<String> filtered = F.flow("Mary", "had", "a", "little", "lamb").map(F.select(combinedp, identity)) .remove(isNull).toList(); assertListsEquals(filtered, "Mary", "little", "lamb"); }