【发布时间】:2018-10-26 04:16:27
【问题描述】:
我正在尝试在 Java 中创建等效于 Javascript 的 Array#map。
我已经能够做到这一点
ArrayList<String> data = myList.stream().map(e -> {
return "test "+e;
}).collect(Collectors.toCollection(ArrayList::new));
这里,myList 是初始 ArrayList,data 是结果 ArrayList。
但是,我发现每次都这样做非常乏味。
所以我尝试创建一个通用函数,让我的生活更轻松:
public static ArrayList<?> map(ArrayList<?> list, Function<? super Object,?> callback){
return list.stream().map(callback).collect(Collectors.toCollection(ArrayList::new));
}
然后调用它:
ArrayList<String> data = DEF.map(myList,e -> {
return "test "+e;
});
但我得到了错误
[Java] 中的方法 map(ArrayList, Function) DEF 类型不适用于参数(列表,( e) -> {})
如何编辑我的通用函数以接受我正在使用的 lambda?
【问题讨论】:
-
啊,它在抱怨
List与ArrayList。您应该对接口进行编程,即将参数更改为List<?>。
标签: java function lambda parameters java-8