【发布时间】:2018-10-13 16:28:50
【问题描述】:
所以我目前正在尝试实现一种方法,该方法对列表进行一些过滤,而不管它们的实际类型如何。这是实际的方法:
public static <T extends List<String>> T filterList(T list, Predicate <String> predicate) {
T newList = ???
list.forEach(s -> {
if (predicate.test(s)) newList.add(s);
});
return newList;
}
所以泛型类型 T 基本上是 List 的一些实现,例如 ArrayList 或 LinkedList,无论它们的实际实现如何,我都想通过作为参数传递的 Predicate 进行一些过滤。该方法的返回类型与作为参数传递的列表相同。但是如何根据 T 实例化一个空列表(参见第 2 行)? 为了向您展示该方法的用途,我提供了一个示例。以下示例将根据包含字符串的长度过滤 ArrayList:
ArrayList<String> listOfNames = new ArrayList<>();
listOfNames.add("stackoverflowuser");
listOfNames.add("sitaguptana");
listOfNames.add("nyan cat");
listOfNames.add("pedro");
Predicate<String> lengthUnderTen = (string) -> string.length() < 10;
ArrayList <String> result = filterList(listOfNames,lengthUnderTen);
【问题讨论】:
-
谁能举个例子
-
@solomid 查看链接 giorashc 或我发布的
-
我认为这不能回答我的问题
标签: java collections java-8 functional-programming predicate