java8写一段“多个key作为组合key,相同的组合ke,只保留最新一条数据”的共通class
时间: 2024-05-03 19:21:14 浏览: 109
以下是一个示例类,可以用于将多个键组合成一个组合键,并保留每个组合键的最新记录:
```
import java.util.HashMap;
import java.util.Map;
public class MultiKeyMap<T> {
private Map<Map<String, Object>, T> map = new HashMap<>();
public void put(Map<String, Object> keys, T value) {
map.put(keys, value);
}
public T get(Map<String, Object> keys) {
return map.get(keys);
}
public void remove(Map<String, Object> keys) {
map.remove(keys);
}
public void update(Map<String, Object> keys, T value) {
map.put(keys, value);
}
public Map<Map<String, Object>, T> getMap() {
return map;
}
}
```
在这个类中,我们使用一个 `Map<Map<String, Object>, T>` 来保存记录。每个记录都包括一个组合键,以及对应的值。我们提供了几个方法来操作这个 Map:
- `put` 方法用于将一个新的记录添加到 Map 中。
- `get` 方法用于获取给定组合键的记录。
- `remove` 方法用于删除给定组合键的记录。
- `update` 方法用于更新给定组合键的记录。
使用这个类时,你需要将多个键组合成一个 Map,并将其作为组合键传递给 `put`、`get`、`remove` 和 `update` 方法。例如,如果你有三个键 `a`、`b` 和 `c`,你可以这样使用这个类:
```
MultiKeyMap<String> map = new MultiKeyMap<>();
Map<String, Object> keys = new HashMap<>();
keys.put("a", "foo");
keys.put("b", "bar");
keys.put("c", 42);
map.put(keys, "value1");
keys.put("c", 43);
map.put(keys, "value2");
String value = map.get(keys); // value == "value2"
```
在这个示例中,我们创建了一个 `MultiKeyMap<String>`,并向其中添加了两个记录。这两个记录都使用了相同的组合键,但是它们的值不同。当我们调用 `get` 方法时,它返回的是最新的记录。
阅读全文