Jig*_*aik 4 java java-8 java-stream
是否可以在下面一行中使用Java8编写所有空字符串和空字符串检查的代码?
Map<Integer, Map<String, Object>> data = new HashMap<>(holdings.rowMap());
Set<Entry<Integer, Map<String, Object>>> entrySet = data.entrySet();
double transactedQuantity = 0;
for (Entry<Integer, Map<String, Object>> entry : entrySet) {
Map<String, Object> value = entry.getValue();
Object qty = value.get("quantity");
if (qty != null && qty != "") {
transactedQuantity += Double.valueOf(qty.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
像下面这样
data.values().stream().filter((k,v) -> k.equals("quantity") && v != null && v != "").flatMapToDouble(...);
Run Code Online (Sandbox Code Playgroud)
这个怎么样,
data.values().stream()
.map(m -> m.get("quantity"))
.filter(qty -> qty != null && qty != "")
.mapToDouble(qty -> Double.valueOf(qty.toString()))
.sum();
Run Code Online (Sandbox Code Playgroud)
以下代码可能是解决方案:
double transactedQuantity = data.values()
.stream()
.map(valueMap -> valueMap.get("quantity"))
.filter(exactQuantity -> exactQuantity != null)
.map(quantityInString -> quantityInString.toString())
.filter(quantity -> !quantity.isEmpty())
.mapToDouble(quantityInString -> Double.valueOf(quantityInString))
.sum();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |