Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java8中是否可以向removeIf添加日志记录?_Java_Collections_Java 8_Java Stream - Fatal编程技术网

在Java8中是否可以向removeIf添加日志记录?

在Java8中是否可以向removeIf添加日志记录?,java,collections,java-8,java-stream,Java,Collections,Java 8,Java Stream,我正在使用Java8 以下代码工作正常: public void testMethod(List<String> prop1, EmailJson randomModel) { prop1.stream().forEach(s -> randomModel.getSomeList() .removeIf(model -> model.getSomeProp().equalsIgnoreCase(s))); } public void te

我正在使用Java8

以下代码工作正常:

public void testMethod(List<String> prop1, EmailJson randomModel) {
    prop1.stream().forEach(s -> randomModel.getSomeList()
            .removeIf(model -> model.getSomeProp().equalsIgnoreCase(s)));
}
public void testMethod(列表prop1,EmailJson随机模型){
prop1.stream().forEach->randomModel.getSomeList()
.removeIf(model->model.getSomeProp().equalsIgnoreCase));
}
如果条件为真,是否可以记录消息

我正在寻找类似于:

public void testMethod(List<String> prop1, EmailJson randomModel) {
    prop1.stream().forEach(s -> randomModel.getSomeList()
            .removeIf(model -> model.getSomeProp().equalsIgnoreCase(s))
                    - > if this is true then log some action);
}
public void testMethod(列表prop1,EmailJson随机模型){
prop1.stream().forEach->randomModel.getSomeList()
.removeIf(model->model.getSomeProp().equalsIgnoreCase)
->如果这是真的,则记录一些操作);
}

您可以随时更换

removeIf(model -> model.getSomeProp().equalsIgnoreCase(s))


如果这是一个重复出现的问题,您可以创建一个助手方法,用另一个操作(例如,日志记录)概括修饰谓词的任务:

static <T> Predicate<T> logging(Predicate<T> p, BiConsumer<T,Boolean> log, boolean all) {
    return t -> {
        final boolean result = p.test(t);
        if(all || result) log.accept(t, result);
        return result;
    };
}

编辑以反映“removeIf block”并非真正正确的事实
removeIf
是一个使用谓词的方法。我还包装了代码以避免水平滚动。希望没问题。
static <T> Predicate<T> logging(Predicate<T> p, BiConsumer<T,Boolean> log, boolean all) {
    return t -> {
        final boolean result = p.test(t);
        if(all || result) log.accept(t, result);
        return result;
    };
}
public void testMethod(List<String> prop1, EmailJson randomModel){
    prop1.forEach(s -> randomModel.getSomeList()
        .removeIf(logging(model -> model.getSomeProp().equalsIgnoreCase(s),
            (model,b) -> LOGGER.info(() -> "matched: "+model.getSomeProp()), false)));
}
public void testMethod(List<String> prop1, EmailJson randomModel){
    prop1.stream().forEach(s -> {
        if(randomModel.getSomeList()
                      .removeIf(model -> model.getSomeProp().equalsIgnoreCase(s)))
            LOGGER.info(() -> "there were matches of: "+s);
    });
}