package com.read.JDK8.Chap02;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/***
* JAVA8 实战 第二章
*/
public class Demo2_1_1_test {
public static void main(String[] args) {
List<People> inventory = Arrays.asList(
new People("wang", 10),
new People("wang", 10),
new People("zhao", 30),
new People("qian", 21),
new People("qian", 15)
);
// 行为传递
List<People> byNamePeople = filterPeopleByName(inventory, "wang");
System.out.println("根据name参数 选择 ");
System.out.println(byNamePeople);
List<People> xwPeople = filter(inventory, new PeoloeNameWang());
System.out.println("接口参数传递选择");
System.out.println(xwPeople);
List<People> tenPeople = filter(inventory, new PeopleAgeTen());
System.out.println(tenPeople);
List<People> tenWangPeople = filter(inventory, new PeopleWangorTen());
System.out.println(tenWangPeople);
List<People> lambdaPeople = filter(inventory, (People p) -> p.getName().equals("wang"));
System.out.println(lambdaPeople);
// 抽象方式选择数据处理
List<People> listAp = filertTall(inventory, (People p) -> p.getName().equals("wang") || p.getAge() > 10);
System.out.println(listAp);
}
public static List<People> filter(List<People> inventory, PeoplePredicate peoplePredicate) {
List<People> result = new ArrayList<>();
for (People p : inventory) {
if (peoplePredicate.test(p)) {
result.add(p);
}
}
return result;
}
public static List<People> filterPeopleByName(List<People> inventory, String name) {
List<People> result = new ArrayList<>();
for (People p : inventory) {
if (p.getName().equals(name)) {
result.add(p);
}
}
return result;
}
static <T> List<T> filertTall(List<T> list, Predicate<T> predicate) {
// 抽象 list 接受更多的类型
List<T> result = new ArrayList<>();
for (T t : list) {
if (predicate.test(t)) {
result.add(t);
}
}
return result;
}
interface Predicate<T> {
boolean test(T t);
}
interface PeoplePredicate {
boolean test(People p);
}
public static class People {
private String name;
private int age;
public People(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "People{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
static class PeoloeNameWang implements PeoplePredicate {
public boolean test(People people) {
return "wang".equals(people.getName());
}
}
static class PeopleAgeTen implements PeoplePredicate {
@Override
public boolean test(People p) {
return p.getAge() > 10;
}
}
static class PeopleWangorTen implements PeoplePredicate {
@Override
public boolean test(People p) {
return "wang".equals(p.getName()) || p.getAge() > 10;
}
}
}
【Java】JDK8 学习 第二章
最新推荐文章于 2024-09-16 09:32:28 发布