为清晰起见,命名集合扩展

Tet*_*Oni 5 java generics collections coding-style

在不添加新的外部库依赖项的情况下向我们的代码库引入一些收集操作的优点,我们将这些方法添加到我们的实用程序包中.

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);
Run Code Online (Sandbox Code Playgroud)

随附接口

public interface Predicate<T> { public boolean apply(T item); }
public interface Mutator<T,Y> { public Y apply(T item); }
Run Code Online (Sandbox Code Playgroud)

所以问题:

  • Filter是包含扩展名的类的好名字吗?如果没有,更好?
  • Mutator <T,Y>是否适当命名?
  • 如果我喜欢映射变换减少过滤
  • 是否有任何重要的基于集合的函数我忘记包含在库类中?

编辑添加:我对地图的一个重要论点(因而支持变换)是由于java.util.Map的许多用途,地图具有显着的语义加载

wax*_*ing 1

我将它们称为“地图”“过滤器”。对我而言,Reduce 的含义略有不同,而 Transform 则太模糊了。至于类名,Filters可能不是最好的,但我也没有更好的推荐。

我知道您并没有具体要求这一点,但通用方法中的一些签名可以改进:

 static public <T> List<T> filter(List<T> source, Predicate<? super T> filter);
 static public <Y,T> List<Y> transform(List<T> source, Mutator<Y,? super T> filter);
 static public <T> boolean exists(List<T> source, Predicate<? super T> filter);
 static public <T> T findFirst(List<T> source, Predicate<? super T> filter);
 static public <T> boolean trueForAll(List<T> source, Predicate<? super T> filter);
Run Code Online (Sandbox Code Playgroud)