gpt4 book ai didi

java - java 8 中的 Lambda 表达式(使用 java.util.Optional 在 HashMap 中进行空检查)

转载 作者:行者123 更新时间:2023-11-29 06:57:36 25 4
gpt4 key购买 nike

我是 Java 8 的新手,正在学习 lambda 表达式。

我有一个接口(interface)。

配置.java

package com.raghu.example;

import java.util.Map;


public interface Configuration {

public Map<String,String> getPayload();

}

接口(interface)实现:ConfigurationImpl.java

package com.raghu.example;

import java.util.HashMap;
import java.util.Map;

public class ConfigurationImpl implements Configuration {

@Override
public Map<String, String> getPayload() {
Map<String,String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
//return null;
return map;
}

}

我的主程序:Sample.java

package com.raghu.example;
import java.util.Optional;

public class Sample {

Configuration config;

/*
* if config is null, return "";
* if config.getPaylaod is null, return "";
* if config.payload is not null and if key value is present, then return the value
* if config.payload is not null and if invalid key, then return "";
*
*/

String test(String key) {
config = new ConfigurationImpl();
String dataValue = "";

/** java 7
if (StringUtils.isNotEmpty(key)) {
try {
String input= config.getPayload()==null?"":config.getPayloadmap().get(key);
return (input!=null?input:"");
} catch (Exception e) {
return "";
}
}
return "";
}**/
Optional.ofNullable(config).map(Configuration::getPayload).ifPresent(v->{final String str=v.get(key);System.out.println(str);});
// //cdataValue=str;});
// //Optional.ofNullable(config).map(Configuration::getPayload).ifPresent(v->{final String str=v.get(key);System.out.println(str);return str;});
return dataValue;
}

public static void main(String[] args) {
Sample s = new Sample();
String value="";
value=s.test("key"); //pass invalid , should return "";
System.out.println(value);
value=s.test("key1"); //pass invalid , should return actual value
System.out.println(value);
}

}

现在在方法测试中,我想做以下[""]。

  1. 检查配置是否为空,返回空字符串。
  2. 检查集合是否为空,返回空字符串。
  3. 如果 collection 不为 null,且 key 存在,则返回值 else return "";

如何在 Java 8 中执行此操作?

试过这个:

  1. 错误一:无效方法不能返回值

    Optional.ofNullable(config).map(Configuration::getPayload).ifPresent(v->{final String str=v.get(key);System.out.println(str);return str;});
  2. 错误 2:在封闭范围内定义的局部变量 dataValue 必须是最终的或实际上是最终的。

    Optional.ofNullable(config).map(Configuration::getPayload).ifPresent(v->{final String str=v.get(key);System.out.println(str);dataValue= str;});

添加 final 没有解决。

还发布了 java 7 代码,我正在尝试使用 lambda 表达式解决 java 7 的 if-else 部分。

最佳答案

你可以继续链接 .map(...)。如果 null 在任何步骤发生,它只会使整个事情变成一个空的 Optional 然后 orElse("") 将返回默认值。

return Optional.ofNullable(config)
.map(Configuration::getPayload)
.map(c->c.get(key))
.orElse("");

关于java - java 8 中的 Lambda 表达式(使用 java.util.Optional 在 HashMap 中进行空检查),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31558848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com