具有多个条件的JavaStreamforEach循环

我有一个 forEach 循环,对于性能问题,我被告知使用 Java 流而不是这个。我有多个案例,我的代码如下。我找不到任何包含多个案例的流示例。有人可以帮我转换这个吗?非常感谢。

name = "Serena";
for(Integer age : ages){
   if(age>10 && age<20)
        methodA(name);
   else if(age>20 && age<30)
        methodB(name);
   else
        methodC(name);

回答

对于更新的问题,Stream API 可用于将年龄映射到Consumer<String>使用对方法的引用methodA, methodB, methodC然后调用,Consumer::accept但这似乎不是很有用,可以视为练习:

public static void main(String .... args) {
    List<Integer> ages = Arrays.asList(1, 10, 15, 20, 22, 30, 33);

    ages.stream()
        .map(MyClass::byAge)
        .forEach(action -> action.accept("Serena"));
}

// mapper to specific method
static Consumer<String> byAge(int age) {
    return 10 < age && age < 20
            ? MyClass::methodA
            : 20 < age && age < 30
            ? MyClass::methodB
            : MyClass::methodC;
}

// consumer methods
public static void methodA(String name) {
    System.out.println("A: " + name);
}

public static void methodB(String name) {
    System.out.println("B: " + name);
}

public static void methodC(String name) {
    System.out.println("C: " + name);
}


以上是具有多个条件的JavaStreamforEach循环的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>