【发布时间】:2018-08-26 16:46:18
【问题描述】:
我正在尝试创建一个扩展 ArrayList 的 table 类。在其中,我希望能够创建一个 map 方法,该方法采用 lambda 表达式并返回一个带有映射值的新 table。我也想用filter 来做这件事。我经常使用地图和过滤器,我不喜欢一遍又一遍地输入整个内容。
public abstract class Table<E extends Element> extends ArrayList<E> {
// a lot of other stuff.
public Table<E> map(/*WHAT DO I PUT HERE?*/ mapper) {
return this.stream().map(mapper).collect(/*WHAT DO I PUT HERE?*/);
}
public Table<E> filter(/*WHAT DO I PUT HERE?*/ predicate) {
return this.stream().filter(predicate).collect(/*WHAT DO I PUT HERE?*/);
}
}
我仍在尝试找出泛型。也许有更好的方法。我不知道。我尝试复制 ArrayList 的原始代码中的内容,但我尝试的一切似乎都会产生新问题。
【问题讨论】:
-
Table是一个抽象类,你会怎么收集到它里面? -
在你的地图功能中,你想映射到什么?据我了解,源和结果是 E 流
-
@Andrew 你同样可以问:
List是一个接口,Collectors.toList怎么收集进去? -
请参考 Efficient Java 为什么扩展
ArrayList不是一个好主意。 -
不要扩展,组合。写一个
class Table implements List并在后台使用ArrayList。
标签: java generics arraylist java-8 extends