我知道如何在流和其他许多基本方面利用中间和终端功能。
但是我得到的任务使我难以实现。最近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.)
}
}
这是我在很多方面都遇到的困难,感谢您的帮助。
最佳答案
您的一支班轮应该看起来像
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,compareerT和mapTtoR参数的实现。
关于java - 我在Java Stream中苦苦挣扎,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40841676/