2021-02-19 函数编程 consumer function

22 阅读1分钟

consumer

List<BasicArea> list = new ArrayList<>();
        Map<String,Consumer<Boolean>> areaPopulate=new HashMap<>();
        list.forEach(basicArea -> {
            areaPopulate.put("a",basicArea::setDeleteStatus);
        });
        
        if (true){// 复杂判断
            areaPopulate.get("a").accept(true);// accept 调用之后,会将之前的预设的要处理的数据,进行处理
        }

例如这个操作,是为了给每个BasicArea 设置 setDeleteStatus 的一个状态,当然可以做很复杂的判断,然后再设置为ture;
只是举个设置为布尔类型的例子,当然其他类型的也可以;

function

public static void main(String[] args) {
        List<BasicArea> areaFailList = new ArrayList<>();// 失败的集合
        List<BasicArea> areaSuccessList = new ArrayList<>();// 所有集合

        quchong(areaFailList, areaSuccessList, vo -> {  // 判断去重的条件
            if(****){
              return false
            }else{
              return true;
            }
        });
}

// 去重的执行方法
    private void quchong(List<BasicArea> areaFailList, List<BasicArea> areaSuccessList, Function<BasicArea, Boolean> vo) {
        Iterator<BasicArea> iterator = areaSuccessList.iterator();
        while (iterator.hasNext()) {
            BasicArea next = iterator.next();
            if (!vo.apply(next)) {  // apply 符合去重条件的
                iterator.remove();
                areaFailList.add(next);
            }
        }
    }

其中 循环中的return ture; 方法 中的入参 Function<BasicArea, Boolean> vo 中的Boolean 对应;

本文转自 jimolvxing.blog.csdn.net/article/det…,如有侵权,请联系删除。