//测试类
package test; import java.util.ArrayList; import java.util.List; import org.junit.jupiter.api.Test; public class TestLambda { @Test public void test() { List<Person>list=new ArrayList<Person>(); list.add(new Person("张三",20,500)); list.add(new Person("李四",40,600)); list.add(new Person("赵四",35,500)); list.add(new Person("王五",36,500)); list.add(new Person("王七",30,600)); list.add(new Person("旺旺",31,700)); list.add(new Person("倪萍",35,500)); List<Person>personList=getPersonList(list,new GetInfoByAge()); System.out.println(list.toString()); System.out.println("personList=========="+personList); personList.forEach(person->System.out.println("结果==="+person)); } /** * 匿名内部类实现 */ @Test public void test2() { List<Person>list=new ArrayList<Person>(); list.add(new Person("张三",20,500)); list.add(new Person("李四",40,600)); list.add(new Person("赵四",35,500)); list.add(new Person("王五",36,500)); list.add(new Person("王七",30,600)); list.add(new Person("旺旺",31,700)); list.add(new Person("倪萍",35,500)); List<Person>list2=getPersonList(list,new MyPrivate<Person>() { @Override public boolean getInfo(Person t) { // TODO Auto-generated method stub return t.getAge()<=32; } }); System.out.println("list2===="+list2); } /** * lambda表达式实现 */ @Test public void Test3() { List<Person>list=new ArrayList<Person>(); list.add(new Person("张三",20,500)); list.add(new Person("李四",40,600)); list.add(new Person("赵四",35,500)); list.add(new Person("王五",36,500)); list.add(new Person("王七",30,600)); list.add(new Person("旺旺",31,700)); list.add(new Person("倪萍",35,500)); List<Person>list3=getPersonList(list,(e)->e.getAge()>=40); System.out.println("list3======"+list3); } /** * 判断方法 * @param list * @param myPrivate * @return */ public List<Person>getPersonList(List<Person>list,MyPrivate<Person> myPrivate){ List<Person>personList=new ArrayList<Person>(); for(Person person:list) { if(myPrivate.getInfo(person)){ personList.add(person); } } return personList; } }
接口
package test; public interface MyPrivate<T> { public boolean getInfo(T t); }
实现类
package test; public class GetInfoByAge implements MyPrivate<Person>{ @Override public boolean getInfo(Person p) { return p.getAge()>=35; } }