哪些类可以作为FilterInputStream,
一、基础代码准备
建立一个实体类,该实体类有五个属性。下面的代码使用了龙目岛的注解Data、AllArgsConstructor,这样我们就不用写获取、设置方法和全参构造函数了龙目岛。会帮助我们在编译期生成这些模式化的代码。
@ Data @ AllArgsConstructorpublic class Employee { private Integer id;私有整数年龄;//年龄私串性别;//性别私有字符串名字私有字符串姓氏}写一个测试类,这个测试类的内容也很简单,新建十个雇员对象
公众的类StreamFilterPredicate { public static void main(String[]args){ Employee E1=新雇员(1,23, M ,里克,贝多芬);雇员e2=新雇员(2,13, F ,玛蒂娜,恒是);雇员e3=新雇员(3,43, M ,瑞奇,马丁);雇员e4=新雇员(4,26, M ,乔恩,洛曼);雇员e5=新雇员(5,19, F ,克莉丝汀,玛利亚);雇员e6=新雇员(6,15,米,大卫,费佐尔);雇员e7=新雇员(7,68, F ,梅丽莎,罗伊);雇员e8=新雇员(8,79, M ,亚历克斯,格斯辛);雇员e9=新雇员(9,15, F ,尼图,辛格);雇员e10=新雇员(10,45, M , Naveen , Jain );列出雇员雇员=数组。aslist(E1,e2,e3,e4,e5,e6,e7,e8,e9,E10);列出筛选的员工=员工。流().过滤器(e-e .获取年龄()70 e .获取性别().等于( M ).收藏(收藏者。to list());System.out.println(已过滤);}}需要注意的是上面的过滤器传入了希腊字母的第11个表达式(之前的章节我们已经讲过了),表达过滤年龄大于70并且男性的雇员员工。输出如下:
[雇员(id=8,年龄=79,性别=M,名字=亚历克斯,姓氏=Gussin)]
二、什么是谓词逻辑?
下面要说我们的重点了,通过之前的章节的讲解,我们已经知道希腊字母的第11个表达式表达的是一个匿名接口函数的实现。那具体到Stream.filter()中,它表达的是什么呢?看下图:可以看出它表达的是一个述语接口,在英语中这个单词的意思是:谓词。
什么是谓词?(百度百科)
什么是谓词逻辑?
哪里和和限定了主语雇员是什么,那么在哪里和和语句所代表的逻辑就是谓词逻辑
SELECT * FROM年龄为70岁且性别= M
三、谓词逻辑的复用
的员工通常情况下,过滤器函数中希腊字母的第11个表达式为一次性使用的谓词逻辑。如果我们的谓词逻辑需要被多处、多场景、多代码中使用,通常将它抽取出来单独定义到它所限定的主语实体中。 比如:将下面的谓词逻辑定义在雇员实体班级中。
public static predicate employee age greater than 70=x-x。getage()70;public static PredicateEmployee性别m=x-x。获取性别().等于( M );
3.1.and语法(并集)
列出筛选的员工=员工。流().筛选(员工。70岁以上。和(员工。性别男).收藏(收藏者。to list());输出如下:
[雇员(id=8,年龄=79,性别=M,名字=亚历克斯,姓氏=Gussin)]
3.2.or语法(交集)
列出筛选出的员工=员工。流().筛选器(员工。70岁以上。或者(员工。性别男).收藏(收藏者。to list());输出如下:实际上就是年龄大于70的和所有的男性(由于79的那位也是男性,所以就是所有的男性)
[雇员(id=1,年龄=23,性别=M,名字=里克,姓氏=Beethovan),雇员(id=3,年龄=43,性别=M,名字=瑞奇,姓氏=马丁),雇员(id=4,年龄=26,性别=M,名字=乔恩,姓氏=Lowman),雇员(id=6,年龄=15,性别=M,名字=大卫,姓氏=Feezor),雇员(id=8,年龄=79,性别=M,名字=亚历克斯,名字=费用
3.3.negate语法(取反)
列出筛选的员工=员工。流().筛选器(员工。70岁以上。或者(员工。性别男).求反())。收藏(收藏者。to list());输出如下:把上一小节代码的结果取反,实际上就是所有的女性
[雇员(id=2,年龄=13,性别=F,名字=玛蒂娜,姓氏=亨吉斯),雇员(id=5,年龄=19,性别=F,名字=Cristine,姓氏=玛丽亚),雇员(id=7,年龄=68,性别=F,名字=梅丽莎,姓氏=罗伊),雇员(id=9,年龄=15,性别=F,名字=Neetu,姓氏=辛格)]
以上就是爪哇岛基础理论溪流的过滤器与谓词逻辑的详细内容,更多关于爪哇岛流的过滤器与谓词逻辑的资料请关注盛行信息技术其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。