比如现在有一个需求现在有一个List 里面装Student 对象 我们想找出这个List 对象里面student name=小明的对象 我想很多同学会像以前的我一样变量List 然后去比较 但是这样处理毕竟效率不高 所以今天查资料总结下
List<Student> list = new ArrayList<>(); list.add(new Student("name1", 1)); list.add(new Student("name2", 2)); list.add(new Student("name3", 2)); list.add(new Student("name1", 3)); /** * 方法一 * 利用 Apache Commons Collections 工具类 * 下载地址 http://commons.apache.org/proper/commons-collections/download_collections.cgi */ Predicate<Student>predicate = new Predicate<Student>() { @Override public boolean evaluate(Student student) { // TODO Auto-generated method stub return student.getAge()==2; } }; //找出age==2 的对象 List<Student> result = (List<Student>) CollectionUtils.select( list, predicate); /** * 方法二 * In java8, using Lambdas and StreamAPI this should be: * 需要安装Java8 */ List<Student> result1 = list.stream() .filter(item -> item.getName().equals("name1")) .collect(Collectors.toList());
打印结果
name2 name3 JAVA8------------------ name1 name1