将Java中的forEach转换为map collect
我有一个名为aMap的嵌套映射,其中键是字符串,值是另一个映射(称为y)。此y包含作为键和值的字符串。我想处理嵌套映射中的值,并根据某种逻辑聚合y中的一些键(基本上我是在减少y中的键数)。我可以使用forEach运行我的逻辑,但是我需要在java8中使用map和collect转换以下内容。问题是我不确定在collect函数中写什么
对于每种代码,所需的时间为:
aMap.forEach(
(x, y) -> {
Set<String> remove = new HashSet<>();
Map<String, Double> add = new HashMap<>();
y.forEach(
(key, value) -> {
String z = key;
long b = 0;
try {
b = some_conversion_on_z()
} catch (ParseException e) {
logger.error("Failed to convert", e);
}
if (some_condition_on_b) {
String d = some_conversion_on_z()
Double currCount = value;
Double prevCount = y.get(d);
if (prevCount == null) {
prevCount = 0.0;
add.put(d, prevCount + currCount);
} else {
y.put(d, prevCount + currCount);
remove.add(z);
}
}
});
y.keySet().removeAll(remove);
y.putAll(add);
});
我正在尝试收集的地图:
aMap.entrySet()
.map(x -> x.getValue())
.map(y -> y.getKey())
.filter(some_condition_on_y)
.collect(?)
共 (0) 个答案