java - 使用Optional.ofNullable()简化条件

标签 java performance oop nullpointerexception java-stream

我想知道使用Optional.ofNullable()是否有退出

for(String name: names){
  if(name != null)
     person = "Mr./Mrs."+name;
  else
      continue;
  greeting(person);
}

我的代码如上面所示。我想在调用函数之前检查参数。我的类中有类似的代码,为了降低复杂性,我想使用 Optional.Nullable()

有没有办法在这里应用Optional.Nullable()?或者是否有另一种方法可以帮助我降低多个 if 检查来检查 null 变量的复杂性?提前致谢。

最佳答案

My code is like above. I want to check the argument before calling the function. I have similar codes in my class and to reduce complexity I want to use Optional.Nullable().

根据您给定的上下文,您有多种选择:

方法 1:重新排列条件

  for(String name: names){
        if(name != null) {
            person = "Mr./Mrs." + name;
            greeting(person);
            ... 
        }
    }

或:

    for(String name: names){
        if(name == null)
            continue;
        person = "Mr./Mrs." + name;
        greeting(person);
        ...
    }

方法 2:使用可选

for(String name: names){     
   Optional.ofNullable(name)
           .map("Mr/Mrs"::concat)
           .ifPresent(YourClass::greeting); 
}

YourClass 只是定义方法 greeting 的类的占位符。

方法 3:使用流

假设 name 是一个 Collection,那么您实际上最好使用 Java Streams,即:

names.stream()
     .filter(Objects::nonNull)
     .forEach(name -> greeting("Mr./Mrs."+name));

如果名称是一个String数组,那么你可以这样做:

Arrays.stream(names)
      .filter(Objects::nonNull)
      .forEach(name -> greeting("Mr./Mrs."+name));

关于java - 使用Optional.ofNullable()简化条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65955626/

相关文章:

java - Facebook Account-Kit + React.js + Spring boot

performance - symfony 性能问题

c++ - 将 matlab 转换为 c++,bsxfun

java - 如何动态添加一个hook而不需要太多的开销?

python - 如何在 Python 中为抽象类定义构造函数实现?

java - 计算当前时间与某一天之间的时间

java - 如何使用 Guava 过滤具有多个值的 map 数组

java - 在 Java 中创建自定义周计数器?

Javascript 时钟,落后几分钟

Python 类,如何明智地使用它们,以及单一职责原则