【发布时间】:2018-05-27 05:12:42
【问题描述】:
我有以下 代码:
public boolean foo(List<JSONObject> source, String bar, String baz) {
List<String> myList = newArrayList();
source.forEach(json -> {
if (!(json.get(bar) instanceof JSONObject)) {
myList.add(json.get(bar).toString());
} else {
myList.add(json.getJSONObject(attribute).get("key").toString());
}
});
/**
* do something with myList and baz
*/
}
我只是想知道是否有办法使用过滤器来内联 if-else 条件。
类似的东西:
List<String> myList = source.stream()
.filter(json -> !(json.get(bar) instanceof JSONObject))
.map(item -> item.get(attribute).toString())
.collect(Collectors.toList());
如果我采用上述方法,我将错过本应为“其他”的情况。如何使用更多java-8 方式实现我想要的?
提前致谢!
【问题讨论】:
-
您可以将您的
if-else移动到地图操作中,但它会变得不可读。 Java8 并不总是最好的方法,为什么不使用简单的旧迭代方式?
标签: java lambda collections java-8 java-stream