Java常用函数式接口总结
Java已经从JDK 8开始支持函数式编程,因此添加了许多的函数式接口,包括常用的Function、Predicate、Consumer等等。本文将对Java中常用的函数式接口进行总结,并给出相应的使用示例。
Function
Function接口定义了一个输入参数类型,返回一个结果类型的方法,通常用于将一个类型的值转换为另一个类型的值。在Java8中,Function接口包含了apply()方法,可以接受1个参数,产生1个结果。
示例1:将字符串转换为整数
Function<String, Integer> strToInt = Integer::valueOf;
Integer num = strToInt.apply("123");// num = 123
示例2:将字符串转换为大写
Function<String, String> toUpperCase = String::toUpperCase;
String upper = toUpperCase.apply("hello");// upper = "HELLO"
Predicate
Predicate接口定义了一个输入参数,返回一个布尔类型的结果,通常用于判断和过滤。在Java8中,Predicate接口包含了test()方法,可以接受1个参数,返回1个布尔值。
示例1:判断数字是否为偶数
Predicate<Integer> isEven = num -> num % 2 == 0;
boolean result1 = isEven.test(2);// true
boolean result2 = isEven.test(3);// false
示例2:过滤字符串长度超过5的元素
List<String> list = Arrays.asList("hello", "world", "java", "functional", "programming");
Predicate<String> isMoreThan5 = str -> str.length() > 5;
List<String> filteredList = list.stream().filter(isMoreThan5).collect(Collectors.toList());
// filteredList = ["functional", "programming"]
Consumer
Consumer接口定义了一个输入参数,没有返回值,通常用于消费一个值,而不是产生一个值。在Java8中,Consumer接口包含了accept()方法,可以接受1个参数,没有返回值。
示例1:输出整数的平方
Consumer<Integer> square = num -> System.out.println(num * num);
square.accept(2);// 输出 4
square.accept(3);// 输出 9
示例2:通过forEach()方法输出字符串列表中的各个元素
List<String> list = Arrays.asList("hello", "world", "java");
Consumer<String> print = System.out::println;
list.forEach(print);// 输出 "hello" "world" "java"
总结
以上就是Java中常用的Function、Predicate和Consumer接口的使用方法和示例。在实际开发过程中,掌握这些接口将会大大提高代码的简洁性和可读性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java常用函数式接口总结 - Python技术站