我正在尝试将 string
解析为 int
,如果字符串为 string
和 lambda,则默认设置为空 null
。这是我的代码:
Map<String, Object> myMap = new HashMap<>();
String myString = "Some String"; //can be also null
myMap.put("myData", Optional.ofNullable(myString).map(Integer::parseInt).orElse(""));
...
问题是我应该将 Integer
中的 .orElse()
设置为默认值,但我需要设置并清空 string
。我知道我可以像这样用 java 做到这一点:
myMap.put("myData", StringUtils.isEmpty(myString) ? "" : Integer.parseInt(myString));
但我想用 lambda 来做到这一点。
有人可以帮我吗?
答案 0 :(得分:1)
这相当简单。我们只需要告诉流管道将 Integer
视为 Object
,而不是 Integer
。哦,是的,那么字符串需要在它不为空时保存一个数字。
Map<String, Object> myMap = new HashMap<>();
String myString = "53"; //can be also null
myMap.put("myData",
Optional.ofNullable(myString)
.map(s -> (Object) Integer.valueOf(s))
.orElse(""));
System.out.println(myMap);
输出:
<块引用>{myData=53}
如果我改变这一行:
String myString = null; //can be also non-null
<块引用>
{myData=}
您不需要使用 Optional
,有些人希望您不要使用。这是一个没有它的变体:
myMap.put("myData", myString == null ? "" : Integer.valueOf(myString));
结果和之前一样。你同意它更简单吗?