java8-filter

package com.weigu.xiaochuang.project;

import com.google.common.collect.Lists;
import sun.dc.path.PathError;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Data {
    private static List<PersonModel> lists = null;

    //当类启动的时候就加载:加载到内存当中去
    //1.利用static关键字
    //2.利用postConstrutor注解
    static {
        PersonModel wu = new PersonModel("wu qi", 18, "男");
        PersonModel zhang = new PersonModel("zhang san", 19, "男");
        PersonModel wang = new PersonModel("wang si", 20, "女");
        PersonModel zhao = new PersonModel("zhao wu", 20, "男");
        PersonModel chen = new PersonModel("chen liu", 21, "男");
        lists = Arrays.asList(wu, zhang, wang, zhao, chen);
        //1.此处可以利用guava进行创建
        //2.可以利用Collections类进行创建
    }

    public static List<PersonModel> getData() {
        return lists;
    }

    /**
     * filter  ----判断集合中的泛型对应的对象的某个属性值;
     */
    public static void filterSex() {
        List<PersonModel> data = Data.getData();

        //定以一个存储数据的集合
        ArrayList<PersonModel> personModels = Lists.newArrayList();
        //jdk1.7以前
        for (PersonModel personModel : data) {
            //此处的"男"可以通过枚举类型进行获取,这样可以是代码看起来更加整洁一点
            if ("男".equalsIgnoreCase(personModel.getSex())) {
                personModels.add(personModel);
            }
        }
        //jdk1.8
        List<PersonModel> list = data.stream()
                .filter(personModel -> {
                    return "男".equalsIgnoreCase(personModel.getSex());
                })
                .collect(Collectors.toList());
    }

    /**
     * 过滤所有男性,并且年龄小于20岁
     */
    public static void filterSexAndAge() {
        List<PersonModel> data = Data.getData();
        //jdk1.7
        List<PersonModel> temp = new ArrayList<>();
        for (PersonModel person : data) {
            if ("男".equals(person.getSex()) && person.getAge() < 20) {
                temp.add(person);
            }
        }
        //jdk1.8
        data.stream()
                .filter(personModel -> {
                    return personModel.getAge() < 20 && "男".equalsIgnoreCase(personModel.getSex());
                })
                .collect(Collectors.toList());
    }
    
}

猜你喜欢

转载自blog.csdn.net/wb_zjp283121/article/details/89045217