当前位置: 首页 > 编程笔记 >

Java 8中的函数和谓词之间的区别

景俊拔
2023-03-14
本文向大家介绍Java 8中的函数和谓词之间的区别,包括了Java 8中的函数和谓词之间的区别的使用技巧和注意事项,需要的朋友参考一下

Java 8中引入了Function和Predicate两种功能接口,以用Java实现功能编程。

函数接口用于进行转换,它可以接受一个参数并产生结果。另一方面,谓词也只能接受一个参数,但只能返回布尔值。用于测试条件。

序号 功能 谓词
1
基本的
它可以包含2个类型参数,第一个代表输入类型参数类型,第二个代表返回类型。
它可以采用一种表示输入类型或参数类型的类型参数。
2
返回类型
它可以返回任何类型的值。
它只能返回布尔值
3
方法
它具有抽象方法apply()
它具有抽象方法test()
4。
用例
可用于实施条件检查
它可以用于转换和返回值。

谓词示例

public class Main {
   public static void main(String args[]) {
      List<Integer> numList = new ArrayList<>();
      numList.add(5);
      numList.add(10);
      Predicate<Integer> pred = i -> i > 5;
      numList.stream().filter(pred).forEach(i -> System.out.println(i));
   }
}

功能实例

public class Main {
   public static void main(String args[]) {
      List<Integer> numList = new ArrayList<>();
      numList.add(78);
      numList.add(10);
      Function<Integer, Integer> fun = i -> i / 2;
      numList.stream().map(fun).forEach(System.out::println);    
   }
}
 类似资料:
  • 这是我的家长课 然后我创建了一个列表 然后我向objList添加了许多父对象。 现在我想根据类中字段的值过滤这些对象。但是我只会动态地得到字段名。我想为此使用流。 这里getAttrib2()有所不同。它可以是getAttrib1()或getAttrib3()。 所以我需要动态函数调用。我们能用谓词实现它吗。不幸的是,我对谓词对象一无所知。请详细解释你的答案,里面有所有的概念。

  • 鉴于这段代码: 这部分: 可以重写为: 我从一本书的示例中提取了这段代码,并说这两种解决方案不同,但我不理解为什么。

  • 本文向大家介绍SCALAR和COLUMN函数之间的区别,包括了SCALAR和COLUMN函数之间的区别的使用技巧和注意事项,需要的朋友参考一下 DB2 SCALAR函数采用单个列值并返回单个结果。COLUMN函数从DB2表的多行中获取列值,并返回单个结果。对于SCALAR函数,仅涉及一行。 SCALAR 函数 描述 LENGTH 给出列值的长度 REPLACE 用于用另一个字符串替换一个字符串 C

  • 问题内容: 使用Java 8,我得到以下代码的编译器错误: 因此,基本上,编译器会说“我知道您会返回,但您不应该返回,如果不知道,我不确定使用哪种方法”,而不是“哦,您将返回,您必须指代该方法的版本” ?如何产生这种混乱? 我知道(如果它们有一个通用的Type),但事实并非如此。 我确实知道如何解决它;如果我这样做很好 但我很好奇是什么原因造成的。 问题答案: 为了清楚起见,可以对此进行一些简化:

  • 问题内容: 我有以下Jquery回调函数,对此我有点怀疑(我不太了解Jquery): 如您所见,该函数只需向后端执行AJAX请求,并为此请求设置参数即可。 我已设置为将请求发送到URL,该请求是POST请求,并且要发送的数据为以下字符串: “ barapple” 我很难理解 contentType* 和 dataType有 什么区别 * 我认为 contentType 指定了HTTP响应中可接受的

  • 问题基于https://stackoverflow.com/A/29671501/2517622 有办法吗?