我知道如何利用流中间和终端功能以及许多其他基本功能。 但我给出的任务让我难以实施。我一直在奋斗36小时不停。 我的任务如下:
以功能方式实现一个静态方法,它采用
List<T>
,对其进行过滤,对其进行排序,仅返回一定数量的值并跳过一定数量的值并对其应用映射函数。返回值应为List<R>
。 T和R是未指定的泛型类型。所有需要的值应为参数。限制和偏移应是可选的。 使用JUnit测试您的方法。
到目前为止,我只能设法编写代码而且我遇到了第一步过滤器。混淆是,如果我不知道列表的类型,我该如何过滤它。
public class GeneralMethods<T,R> {
private List<T> recList;
private List<R> retList;
public void manipulateList(){
retList = recList.stream().filter(s -> s.)
}
}
这是我的任务,我已经挣扎了很多,我很感激你的帮助。
答案 0 :(得分:2)
你的单行应该看起来像
public class GeneralMethods<T,R> {
public List<R> manipulateList(List<T> recList,
Predicate<T> filterPredicate,
Comparator<T> comparatorT,
Function<T,R> mapTtoR,
long ... limitAndOffset){
return recList.stream()
.filter(filterPredicate)
.sorted(comparatorT)
.skip(limitAndOffset.length > 1 ? limitAndOffset[1] : 0)
.limit(limitAndOffset.length > 0 ? limitAndOffset[0] : Long.MAX_VALUE)
.map(mapTtoR)
.collect(toList());
}
}
然后在JUnit上,你必须提供filterPredicate,comparatorT和mapTtoR参数的实现。