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]