我知道如何在流和其他许多基本方面利用中间和终端功能。
但是我得到的任务使我难以实现。最近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/

10-10 20:21