重写其他 - 如果在单个流中Java 8

时间:2016-08-02 06:48:08

标签: java java-stream

我正在尝试使用流

编写以下代码
 public static void main(String[] args) {
        List<String> l = new ArrayList<String>();
        l.add("pavan");
        l.add("kumar");
        l.add("rajesh");

        for(String s : l){
            if(s.contains("pavan")){
                methodA();
            }else if (s.contains("kumar")){
                methodB();
            }else{
                System.out.println("C");
            }
        }
    }
}

我使用流

尝试了以下操作
 public static void main(String[] args) {
        List<String> l = new ArrayList<String>();
        l.add("pavan");
        l.add("kumar");
        l.add("rajesh");
        l.stream().
        filter(s->s.contains("pavan")).
        findAny().map(s->methodB()).filter(s->s.contains("kumar")).map(s->methodC()).
        orElse(methodA());
    }

以上代码永远不会执行methodC()

任何人都可以在一个Java 8流中重写它吗?

1 个答案:

答案 0 :(得分:1)

你可以简单地使用forEach:

l.stream().forEach(s -> {
        if (s.contains("pavan")) {
            methodA();
        } else if (s.contains("kumar")) {
            methodB();
        } else {
            methodC();
        }
    });