快捷查找list集合的某个元素

JAVA 8 lambda 表达式实现按某个属性值查找对象集合中符合条件的对象,需要从集合中查找商品id是1的商品对象。用表达式来查询代码很简洁。最重要的是相对于遍历而言,提交了速度。

    boolean b = mylist.stream().anyMatch(zfDict1 -> zfDict.getDictPid().equals(zfDict1.getDictId()));

stream()将集合转换为流

后面的方法就是java8 stream接口终端操作,常用的有 anyMatch,allMatch,noneMatch。还有一些其他方法,比如filter()等等。
anyMatch:判断的条件里,任意一个元素成功,返回true
allMatch:判断条件里的元素,所有的都是,返回true
noneMatch:与allMatch相反,判断条件里的元素,所有的都不是,返回true
count方法,跟List接口中的 .size() 一样,返回的都是这个集合流的元素的长度,不同的是,流是集合的一个高级工厂,中间操作是工厂里的每一道工序,我们对这个流操作完成后,可以进行元素的数量的和;

而lambda表达式里面的就是判断条件

   List<ZfDict> list =new ArrayList<>();
        QueryWrapper<ZfDict> wrapper=new QueryWrapper<>();
        wrapper.eq("dict_type","CASE_CASETYPE");
        if(key!=null && !"".equals(key.trim())){
            wrapper.like("dict_name",key);
        }
         list = list(wrapper);
         //用来承装原集合,不能直接把list付给他,那样就相当于是一个指针,指向list,mylist何list都是一个集合
        List<ZfDict> mylist =new ArrayList<>();
        mylist.addAll(list);
        for (ZfDict zfDict:list){
            if (zfDict.getDictPid()=="0"||"0".equals(zfDict.getDictPid())){
                continue;
            }
            boolean b = mylist.stream().anyMatch(zfDict1 -> zfDict.getDictPid().equals(zfDict1.getDictId()));
            if (!b){
                ZfDict dict_id = getOne(new QueryWrapper<ZfDict>().eq("dict_id", zfDict.getDictPid()).eq("dict_type","CASE_CASETYPE"));
                if (dict_id!=null){
                    mylist.add(dict_id);
                }
            }
        }

你可能感兴趣的:(Java基础,JAVA网页后台问题合集,list)