Представляя некоторые преимущества операций сбора в нашу кодовую базу без добавления новой зависимости от внешней библиотеки, мы добавляем эти методы в наш пакет утилит.
static public List<T> filter(List<T> source, Predicate<T> filter);
static <Y,T> public List<Y> transform(List<T> source, Mutator<Y,T> filter);
static public boolean exists(List<T> source, Predicate<T> filter);
static public T findFirst(List<T> source, Predicate<T> filter);
static public boolean trueForAll(List<T> source, Predicate<T> filter);
С сопутствующими интерфейсами
public interface Predicate<T> { public boolean apply(T item); }
public interface Mutator<T,Y> { public Y apply(T item); }
Итак, вопросы:
- Является ли Filters хорошим названием для класса, содержащего расширения? Если нет, то лучше?
- Правильно ли назван Mutator ?
- Должен ли я предпочесть map to transform и уменьшить до filter ?
- Существуют ли какие-либо важные основанные на множестве функции, которые я забыл включить в класс библиотеки?
Отредактировано для добавления : существенный аргумент, который я имею против map (и, следовательно, в пользу transform ), заключается в том, что map имеет значительная семантическая нагрузка из-за множества использований java.util.Map