1.(Person p) -> p.getGender() == Person.Sex.MALE && p.getAge() >= 18 && p.getAge() <= 25
- Predicate<Person> tester
- p -> p.printPerson() 指向方法
package org.apache.dubbo.demo.consumer;
import com.alibaba.fastjson.JSON;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
/**
* Created by cr on 2018/11/11.
*/
public class Person {
public enum Sex {
MALE, FEMALE
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
int age;
String name;
LocalDate birthday;
Sex gender;
String emailAddress;
public int getAge() {
return this.age;
} private String getEmailAddress() {
return this.emailAddress;
}
public void printPerson() {
System.out.println(JSON.toJSONString(this));
}
public static void printPersons(
List<Person> roster, Predicate<Person> tester) {
for (Person p : roster) {
if (tester.test(p)) {
p.printPerson();
}
}
}
public static void processPersons(
List<Person> roster,
Predicate<Person> tester,
Consumer<Person> block) {
for (Person p : roster) {
if (tester.test(p)) {
block.accept(p);
}
}
}
public static void processPersonsWithFunction(
List<Person> roster,
Predicate<Person> tester,
Function<Person, String> mapper,
Consumer<String> block) {
for (Person p : roster) {
if (tester.test(p)) {
String data = mapper.apply(p);
block.accept(data);
}
}
}
public static <Z, Y> void processElements(
Iterable<Z> source,
Predicate<Z> tester,
Function <Z, Y> mapper,
Consumer<Y> block) {
for (Z p : source) {
if (tester.test(p)) {
Y data = mapper.apply(p);
block.accept(data);
}
}
}
public static void main(String[] args) {
Person a=new Person("aaa",4);
Person b=new Person("1",5);
Person c=new Person("a2aa",6);
Person d=new Person("a3aa",6);
List<Person> roster= new ArrayList<>();
roster.add(a);roster.add( b);roster.add(c);roster.add(d);
Person.printPersons(roster, (Person p) -> p.getAge() >= 1
&& p.getAge() <= 4);
Person.processPersons(roster,(Person p) -> p.getAge() >= 1
&& p.getAge() <= 4, p -> p.printPerson());
Person.processPersonsWithFunction(
roster,
p -> p.getAge() >= 1
&& p.getAge() <= 4,
p -> p.getEmailAddress(),
email -> System.out.println(email)
);
roster.stream() .filter(
p -> p.getAge() >= 1
&& p.getAge() <= 4).map(p -> p.getEmailAddress())
.forEach(email1 -> System.out.println(email1));
}
}
网友评论