Predicate
Predicate 定义了一个 test()
方法,接受泛型 T 的对象,并且返回一个 boolean 值。
- 定义
/** * 过滤器: 返回满足条件的列表 * @param list * @param predicate * @param <T> * @return */
private static <T> List<T> filter(List<T> list, Predicate<T> predicate) {
List<T> result = new LinkedList<>();
for(T t : list) {
if(predicate.test(t)) {
result.add(t);
}
}
return result;
}
- 测试
public static void main(String[] args) {
List<String> stringList = Arrays.asList("A", "", "C", "Dog", "Delete");
List<String> result = filter(stringList, (String s)->s.startsWith("D"));
System.out.println(result);
}
- 结果
[Dog, Delete]
Consumer
Consumer 定义了一个名为 accept()
的方法。接受泛型 T 的对象,没有返回值(void)。
- 定义
/** * 循环执行 * @param list 列表 * @param consumer * @param <T> */
private static <T> void foreach(List<T> list, Consumer<T> consumer) {
for(T t : list) {
consumer.accept(t);
}
}
- 测试
public static void main(String[] args) {
List<String> stringList = Arrays.asList("A", "", "C", "Dog", "Delete");
foreach(stringList, (String s)-> System.out.println(s));
}
- 结果
A
C
Dog
Delete
Function
Function 定义了一个 apply()
方法,接受一个泛型 T 的参数,返回一个类型 R 的对象。
/** * 将一种元素按照规则映射成为另外一种元素 * @param list * @param function * @param <T> * @param <R> * @return */
private static <T, R> List<R> map(List<T> list, Function<T, R> function) {
List<R> result = new LinkedList<>();
for(T t : list) {
result.add(function.apply(t));
}
return result;
}
- 测试
public static void main(String[] args) {
List<String> stringList = Arrays.asList("A", "", "C", "Dog", "Delete");
List<String> result = map(stringList, (String s)->s.toLowerCase());
System.out.println(result);
}
- 结果
[a, , c, dog, delete]