java supplier,Predicate,Function<T,R> demo
时间: 2024-03-26 11:42:11 浏览: 13
以下是一个演示 Java Supplier、Predicate 和 Function<T, R> 的例子:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
public class Demo {
public static void main(String[] args) {
// 使用 Supplier 创建一个返回字符串的函数
Supplier<String> supplier = () -> "Hello, World!";
// 使用 Predicate 过滤字符串列表中的元素
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
list.add("Java");
Predicate<String> predicate = s -> s.length() > 4;
List<String> filteredList = filterList(list, predicate);
// 使用 Function 将字符串转换为大写形式
Function<String, String> function = String::toUpperCase;
List<String> upperCaseList = mapList(filteredList, function);
// 打印结果
System.out.println(supplier.get());
System.out.println(filteredList);
System.out.println(upperCaseList);
}
// 过滤列表中符合条件的元素
public static <T> List<T> filterList(List<T> list, Predicate<T> predicate) {
List<T> resultList = new ArrayList<>();
for (T t : list) {
if (predicate.test(t)) {
resultList.add(t);
}
}
return resultList;
}
// 对列表中的每个元素应用函数
public static <T, R> List<R> mapList(List<T> list, Function<T, R> function) {
List<R> resultList = new ArrayList<>();
for (T t : list) {
R result = function.apply(t);
resultList.add(result);
}
return resultList;
}
}
```
在上面的例子中,我们使用 Java Supplier 创建了一个返回字符串的函数,使用 Predicate 过滤了一个字符串列表中的元素,并使用 Function 将列表中的每个元素转换为大写形式。具体来说,我们:
1. 使用 Supplier 创建了一个返回字符串 "Hello, World!" 的函数;
2. 创建了一个包含三个字符串的列表,并使用 Predicate 过滤掉其中长度小于等于 4 的元素;
3. 使用 Function 将过滤后的列表中的每个元素转换为大写形式;
4. 打印结果。
输出结果如下:
```
Hello, World!
[World, Java]
[WORLD, JAVA]
```
需要注意的是,我们在示例中使用了泛型方法 `filterList` 和 `mapList`,它们可以接受任何类型的列表和函数,并返回相应类型的结果列表。这种方式可以使代码更加通用和灵活。