Java Java 1.6 上的 Map compute() 示例
Java Map compute() Example on Java 1.6
我必须在 Java 1.6 上工作。我很难在 Java 1.8.
上转换以下代码 运行
Map<String, Double> maksimum = new HashMap<>();
List<Record> records;
for (Record record : records) {
record.getFeatures().forEach((key, value) -> {
maksimum.compute(key, (k1, max) -> max == null || value > max ? value : max);
});
}
我改造的如下。我想知道我哪里做错了。
for(Record rec : records) {
for (Map.Entry<String, Double> entry : rec.getFeatures().entrySet()) {
if (entry.getKey()==null || maksimum.containsKey(entry.getKey())) {
maksimum.replace(entry.getKey(), maksimum.get(entry.getValue()));
}
}
}
如果我正确理解了您在 Java 8 中的初始代码,您希望在 Map
中存储每个键的最大值。这是 Java 6 中应该执行的代码:
Map<String, Double> maksimum = new HashMap<String, Double>();
for (Record record : records) {
for (Map.Entry<String, Double> recordEntry : record.getFeatures().entrySet()) {
String key = recordEntry.getKey();
Double value = recordEntry.getValue();
Double initialValue = maksimum.get(key);
if (initialValue == null) {
maksimum.put(key, value);
} else {
maksimum.put(key, Math.max(value, initialValue));
}
}
}
请注意,您在示例中使用的 replace
函数已在 Java 8 中引入。文档:https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#replace-K-V-
我必须在 Java 1.6 上工作。我很难在 Java 1.8.
上转换以下代码 运行Map<String, Double> maksimum = new HashMap<>();
List<Record> records;
for (Record record : records) {
record.getFeatures().forEach((key, value) -> {
maksimum.compute(key, (k1, max) -> max == null || value > max ? value : max);
});
}
我改造的如下。我想知道我哪里做错了。
for(Record rec : records) {
for (Map.Entry<String, Double> entry : rec.getFeatures().entrySet()) {
if (entry.getKey()==null || maksimum.containsKey(entry.getKey())) {
maksimum.replace(entry.getKey(), maksimum.get(entry.getValue()));
}
}
}
如果我正确理解了您在 Java 8 中的初始代码,您希望在 Map
中存储每个键的最大值。这是 Java 6 中应该执行的代码:
Map<String, Double> maksimum = new HashMap<String, Double>();
for (Record record : records) {
for (Map.Entry<String, Double> recordEntry : record.getFeatures().entrySet()) {
String key = recordEntry.getKey();
Double value = recordEntry.getValue();
Double initialValue = maksimum.get(key);
if (initialValue == null) {
maksimum.put(key, value);
} else {
maksimum.put(key, Math.max(value, initialValue));
}
}
}
请注意,您在示例中使用的 replace
函数已在 Java 8 中引入。文档:https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#replace-K-V-