日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

淺談Java8新特性Predicate接口

瀏覽:154日期:2022-08-12 18:23:46
一、前言

Java 8中引入了Predicate功能接口。

Java Predicate表示一個參數的謂詞。

Predicate是一個布爾值的函數。

Java Predicate是一個功能接口,屬于java.util.function包。

Predicate的功能方法是test(T t)。

Predicate的其他方法是test、isEqual、and、or、negate和not。

not方法在Java 11中被引入。

在本文章,我們將提供Predicate的例子及其所有方法。

二、test(T t)

boolean test(T t)

test是Predicate的功能方法。它在給定的參數上評估這個謂詞。

例1:

PredicateTestDemo1.java

import java.util.function.Predicate;public class PredicateTestDemo1 { public static void main(String[] args) {// Is username validPredicate<String> isUserNameValid = u -> u != null && u.length() > 5 && u.length() < 10;System.out.println(isUserNameValid.test('Mahesh')); //true// Is password validPredicate<String> isPasswordValid = p -> p != null && p.length() > 8 && p.length() < 15;System.out.println(isPasswordValid.test('Mahesh123')); //true// Word matchPredicate<String> isWordMatched = s -> s.startsWith('Mr.');System.out.println(isWordMatched.test('Mr. Mahesh')); //true//Odd numbersPredicate<Integer> isEven = n -> n % 2 == 0;for(int i = 0 ; i < 5 ; i++) { System.out.println('Is '+ i + ' even: ' + isEven.test(i));} }}

輸出結果

truetruetrueIs 0 even: trueIs 1 even: falseIs 2 even: trueIs 3 even: falseIs 4 even: true

例2:

PredicateTestDemo2.java

import java.util.function.Function;import java.util.function.Predicate;public class PredicateTestDemo2 { public static void main(String[] args){ Predicate<Student> maleStudent = s-> s.getAge() >= 20 && 'male'.equals(s.getGender()); Predicate<Student> femaleStudent = s-> s.getAge() > 18 && 'female'.equals(s.getGender());Function<Student,String> maleStyle = s-> 'Hi, You are male and age '+s.getAge(); Function<Student,String> femaleStyle = s-> 'Hi, You are female and age '+ s.getAge();Student s1 = new Student('Gauri', 20,'female'); if(maleStudent.test(s1)){System.out.println(s1.customShow(maleStyle)); }else if(femaleStudent.test(s1)){System.out.println(s1.customShow(femaleStyle)); }}

Student.java

import java.util.function.Function;public class Student { private String name; private int age; private String gender; private int marks; public Student(String name, int age, String gender){ this.name = name; this.age = age; this.gender = gender; } public Student(String name, int age, String gender, int marks){ this.name = name; this.age = age; this.gender = gender; this.marks = marks; } public String getName() { return name; } public int getAge() { return age; } public String getGender() { return gender; } public int getMarks() { return marks; } public String customShow(Function<Student,String> fun){ return fun.apply(this); } public String toString(){ return name+' - '+ age +' - '+ gender + ' - '+ marks; } }

輸出結果

Hi, You are female and age 20

三、and(Predicate<? super T> other)

default Predicate<T> and(Predicate<? super T> other)

and是Predicate的默認方法,它返回一個組成的謂詞,表示這個謂詞和其他謂詞的短路邏輯AND。在評估組成的謂詞時,如果這個謂詞是假的,那么其他謂詞將不會被評估。在錯誤的情況下,如果此謂詞拋出錯誤,那么其他謂詞將不會被評估。

PredicateAndDemo.java

import java.util.function.Predicate;public class PredicateAndDemo { public static void main(String[] args) {Predicate<Student> isMaleStudent = s -> s.getAge() >= 20 && 'male'.equals(s.getGender());Predicate<Student> isFemaleStudent = s -> s.getAge() > 18 && 'female'.equals(s.getGender());Predicate<Student> isStudentPassed = s -> s.getMarks() >= 33;// Testing if male student passed.Student student1 = new Student('Mahesh', 22, 'male', 30);Boolean result = isMaleStudent.and(isStudentPassed).test(student1);System.out.println(result); //false// Testing if female student passed.Student student2 = new Student('Gauri', 19, 'female', 40);result = isFemaleStudent.and(isStudentPassed).test(student2);System.out.println(result); //true }}

輸出

falsetrue

四、or(Predicate<? super T> other)

default Predicate<T> or(Predicate<? super T> other)

or是Predicate的默認方法,它返回一個組成的謂詞,表示此謂詞和其他謂詞的短路邏輯OR。在評估組成的謂詞時,如果此謂詞為真,那么其他謂詞將不會被評估。在錯誤的情況下,如果此謂詞拋出錯誤,那么其他謂詞將不會被評估。

PredicateOrDemo.java

import java.util.function.Predicate;public class PredicateOrDemo { public static void main(String[] args) {Predicate<Student> isMaleStudent = s -> s.getAge() >= 20 && 'male'.equals(s.getGender());Predicate<Student> isFemaleStudent = s -> s.getAge() > 18 && 'female'.equals(s.getGender());Predicate<Student> isStudentPassed = s -> s.getMarks() >= 33;Student student1 = new Student('Mahesh', 22, 'male', 35);//Test either male or female studentBoolean result = isMaleStudent.or(isFemaleStudent).test(student1);System.out.println(result); //true//Is student passed, tooresult = isMaleStudent.or(isFemaleStudent).and(isStudentPassed).test(student1);System.out.println(result); //true }}

輸出

truetrue

五、negate()

default Predicate<T> negate()

negate是Predicate的默認方法,它返回一個表示該謂詞的邏輯否定的謂詞。如果評估的結果是真的,negate將使它變成假的,如果評估的結果是假的,negate將使它變成真的。

PredicateNegateDemo.java

import java.util.function.Predicate;public class PredicateNegateDemo { public static void main(String[] args) { Predicate<Integer> isNumberMatched = n -> n > 10 && n < 20; //With negate() Boolean result = isNumberMatched.negate().test(15); System.out.println(result); //false //Without negate() result = isNumberMatched.test(15); System.out.println(result); //true Predicate<String> isValidName = s -> s.length() > 5 && s.length() < 15; System.out.println(isValidName.negate().test('Krishna')); //false Predicate<Integer> isLessThan50 = n -> n < 50; System.out.println(isLessThan50.negate().test(60)); //true Predicate<Integer> isGreaterThan20 = n -> n > 20; System.out.println(isGreaterThan20.negate().test(30)); //false result = isLessThan50.and(isGreaterThan20).negate().test(25); System.out.println(result); //false }}

輸出

falsetruefalsetruefalsefalse

六、isEqual(Object targetRef)

static <T> Predicate<T> isEqual(Object targetRef)

isEqual是Predicate的靜態方法,它返回測試兩個參數是否等于Objects.equals(Object, Object)的謂詞。我們使用Predicate.isEqual創建predicate,如下所示。

Predicate<String> isHelloMsg = Predicate.isEqual('Hello');Predicate<Book> isMahabharatBook = Predicate.isEqual(new Book('Mahabharat', 'Vyas'));

PredicateIsEqualDemo.java

import java.util.function.Predicate;public class PredicateIsEqualDemo { public static void main(String[] args) { System.out.println('---Testing Hello message---'); Predicate<String> isHelloMsg = Predicate.isEqual('Hello'); System.out.println(isHelloMsg.test('Hello')); //true System.out.println(isHelloMsg.test('Hi')); //falseSystem.out.println('---Testing Mahabharat book---'); Book mahabharatBook = new Book('Mahabharat', 'Vyas'); Predicate<Book> isMahabharatBook = Predicate.isEqual(mahabharatBook); System.out.println(isMahabharatBook.test(new Book('Mahabharat', 'Vyas'))); //true System.out.println(isMahabharatBook.test(new Book('Ramayan', 'Valmiki'))); //false }}class Book { private String name; private String writer; public Book(String name, String writer) {this.name = name;this.writer = writer; } public String getName() { return name; } public String getWriter() { return writer; } public boolean equals(final Object obj) { if (obj == null) {return false; } final Book b = (Book) obj; if (this == b) {return true; } else {return (this.name.equals(b.name) && (this.writer == b.writer)); } } }

輸出

---Testing Hello message---truefalse---Testing Mahabharat book---truefalse

七、not(Predicate<? super T> target)

static <T> Predicate<T> not(Predicate<? super T> target)

not是Java 11中引入的Predicate的靜態方法。

not返回的predicate是對所提供的predicate的否定。

這是通過返回調用target.negate()的結果來完成的。

找到Predicate.not的例子。

PredicateNotDemo.java

import java.util.function.Predicate;public class PredicateNotDemo { public static void main(String[] args) { Predicate<Integer> isOdd = n -> n % 2 == 1; Predicate<Integer> isEven = Predicate.not(isOdd); System.out.println(isEven.test(10)); //truePredicate<String> isNotHelloMsg = Predicate.not(Predicate.isEqual('Hello')); System.out.println(isNotHelloMsg.test('Hi')); //true System.out.println(isNotHelloMsg.test('Hello')); //false }}

輸出

truetruefalse

在Stream中使用Predicate

我們將提供例子在Stream中使用Predicate。

我們將使用Stream.filter來過濾列表。

filter()的語法如下。

filter(Predicate predicate)

filter()在處理給定的Predicate后,返回由過濾后的數據組成的Stream實例。

例1:

PredicateStreamDemo1.java

import java.util.ArrayList;import java.util.List;import java.util.function.Predicate;public class PredicateStreamDemo1 { public static void main(String[] args) {List<String> list = new ArrayList<>();list.add('Vijay');list.add('Ramesh');list.add('Mahesh');Predicate<String> isNameEndsWithSh = s -> s.endsWith('sh');list.stream().filter(isNameEndsWithSh) .forEach(s -> System.out.println(s)); }}

輸出

RameshMahesh

例2:

PredicateStreamDemo2.java

import java.util.ArrayList;import java.util.List;import java.util.function.Predicate;import java.util.stream.Collectors;public class PredicateStreamDemo2 { public static void main(String[] args) {List<Student> list = new ArrayList<>();list.add(new Student('Mahesh', 20, 'male', 38));list.add(new Student('Gauri', 21, 'female', 45));list.add(new Student('Krishna', 19, 'male', 42));list.add(new Student('Radha', 20, 'female', 35));System.out.println('--- All students scoring marks > 40 ---');Predicate<Student> isScoreGt40 = std -> std.getMarks() > 40;filterStudent(isScoreGt40, list).forEach(s -> System.out.println(s));System.out.println('--- All Male Students ---');Predicate<Student> isMaleStudent = std -> 'male'.equals(std.getGender());filterStudent(isMaleStudent, list).forEach(s -> System.out.println(s));System.out.println('--- All Female Students ---');Predicate<Student> isFemaleStudent = std -> 'female'.equals(std.getGender());filterStudent(isFemaleStudent, list).forEach(s -> System.out.println(s));System.out.println('--- All Female Students scoring > 40 ---');filterStudent(isFemaleStudent.and(isScoreGt40), list).forEach(s -> System.out.println(s)); } static List<Student> filterStudent(Predicate<Student> predicate, List<Student> list) {return list.stream().filter(predicate).collect(Collectors.toList()); }}

輸出

--- All students scoring marks > 40 ---Gauri - 21 - female - 45Krishna - 19 - male - 42--- All Male Students ---Mahesh - 20 - male - 38Krishna - 19 - male - 42--- All Female Students ---Gauri - 21 - female - 45Radha - 20 - female - 35--- All Female Students scoring > 40 ---Gauri - 21 - female - 45

到此這篇關于淺談Java8新特性Predicate接口的文章就介紹到這了,更多相關Java Predicate內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩毛片视频| 亚洲美女久久精品| 激情久久婷婷| 欧美日韩在线播放视频| 日韩欧美少妇| 欧美/亚洲一区| 国产日韩专区| 五月天综合网站| 99在线观看免费视频精品观看| 欧美精品羞羞答答| 亚洲中午字幕| 日韩精品一区二区三区中文| 亚洲精品韩国| 国产区精品区| 美日韩一区二区三区| 久久精品国产亚洲一区二区三区| 欧美精品导航| 国产激情在线播放| 久久伦理在线| 美日韩精品视频| 日本不卡视频在线| 国产精久久久| 久久99精品久久久久久园产越南| 成人国产精选| 美女网站一区| 亚洲天堂日韩在线| 欧美视频久久| 97视频热人人精品免费| 韩日一区二区三区| 日韩精品免费视频人成| 精品国产一区二区三区av片| 麻豆国产一区| 99精品美女| 香蕉久久一区| 四虎国产精品免费观看| 亚洲精品网址| 欧美亚洲一级| 国产资源在线观看入口av| 美女毛片一区二区三区四区| 蜜臀久久久久久久| 中文字幕成人| 91久久久精品国产| 日韩一区二区三区免费播放| 国产精品亚洲欧美日韩一区在线 | 成人综合一区| 日韩天堂在线| 中文不卡在线| 国产一区2区在线观看| 欧美日韩激情| 少妇精品久久久一区二区| 精品久久一区| 午夜在线视频观看日韩17c| 欧美日韩va| 欧美中文字幕一区二区| 日韩高清电影免费| 亚洲www免费| 日韩av午夜在线观看| av高清一区| 欧美日韩亚洲三区| 99久久夜色精品国产亚洲1000部| 日韩精品导航| 久久久久国产一区二区| 日韩不卡一区二区三区| 精品久久国产一区| 日韩影院精彩在线| 成人在线视频中文字幕| 日韩精品一级中文字幕精品视频免费观看 | 国产在线日韩精品| 免费视频一区二区| 日韩精品不卡一区二区| 丝袜美腿亚洲一区| 日本美女一区| 国产日产精品_国产精品毛片| 九九综合九九| av资源中文在线| 国产香蕉精品| 免费视频久久| 久久免费国产| 免费视频一区二区三区在线观看| 亚洲视频国产| 免费精品国产的网站免费观看| 国产精品第一| 日韩一区二区三区免费视频| 激情婷婷久久| 国际精品欧美精品| 日韩和欧美的一区| 亚洲免费激情| 久久国产免费| 亚洲ww精品| 麻豆久久精品| 欧美午夜不卡影院在线观看完整版免费| 国产一区二区三区网| 国产亚洲精品美女久久| 免费看欧美美女黄的网站| 成人精品动漫一区二区三区| 欧美视频一区| 日韩精品亚洲专区在线观看| 视频一区视频二区中文字幕| 亚洲第一区色| 涩涩av在线| 久久中文欧美| 国产精品久久久久久久久久齐齐| 亚洲精品乱码| 日本欧洲一区二区| 久久成人精品| 午夜久久影院| 欧美日韩激情在线一区二区三区| 99久久九九| 欧美精品一二| 在线综合亚洲| 国产精品呻吟| 美日韩精品视频| 蜜桃精品在线| 亚洲男人在线| 91九色综合| 欧美91精品| 91精品国产调教在线观看| 韩国一区二区三区视频| 免费在线成人| 成人日韩av| 99久久夜色精品国产亚洲狼| 久久精品亚洲人成影院| 久久精品官网| 亚洲午夜久久久久久尤物| 久久天堂精品| 激情久久久久久久| 午夜电影亚洲| 爽爽淫人综合网网站| 视频一区二区三区在线| 国产亚洲一区在线| 性欧美长视频| 亚洲欧洲av| 日韩福利视频导航| 国产精品一区免费在线| 国产精品黄色| 91亚洲国产高清| 欧美精品日日操| 亚洲高清不卡| 欧美日韩国产综合网| 尹人成人综合网| 免费一区二区视频| 久久国产视频网| 国产精品chinese| 日本一区二区高清不卡| 亚洲天堂资源| 欧美~级网站不卡| 蜜臀av一区二区三区| 97se亚洲| 成人午夜亚洲| 免费国产自久久久久三四区久久| 蜜臀av性久久久久蜜臀aⅴ流畅| 日本va欧美va瓶| 精品视频国内| 91精品啪在线观看国产18| 99re国产精品| 日韩精品一页| 日韩成人精品一区| 在线综合亚洲| 国产高清亚洲| 欧美日韩尤物久久| 久久aⅴ国产紧身牛仔裤| 欧美视频精品全部免费观看| 97欧美在线视频| 亚洲欧美日韩国产| 国产精品一区二区中文字幕| 亚洲二区免费| 欧美亚洲综合视频| 黄色在线网站噜噜噜| 亚洲欧美日本国产专区一区| 国产精品观看| 影音先锋国产精品| 久久不见久久见国语| 欧美日韩在线观看视频小说| 久色成人在线| 精品网站999| 午夜久久免费观看| 国产亚洲一区二区三区啪| 黄色在线观看www| 综合国产视频| 激情国产在线| 日韩精品五月天| 亚洲成av在线| 日产欧产美韩系列久久99| а√天堂8资源在线| 午夜一级久久| 国产一区国产二区国产三区 | 国产精品nxnn| 亚洲高清影视| 国产精品va视频| 欧美日韩国产在线观看网站| 国产精品一区二区三区www | 久久久成人网| 欧美久久香蕉| 国产专区一区| 国产精品sss在线观看av| 91久久视频| 国产在线看片免费视频在线观看| 婷婷精品在线| 久久中文字幕二区| 美女尤物国产一区|