我有一个名为aMap的嵌套映射,其中key是一个字符串,value是另一个映射(称为y)。这个y包含字符串作为键和值。我想处理嵌套映射中的值并根据某些逻辑聚合y中的一些键(基本上我减少了y中的键数)。我能够使用forEach运行我的逻辑,但我需要使用map转换以下内容并在Java 8中收集。问题是我不确定在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(?)