【发布时间】:2020-06-09 16:29:33
【问题描述】:
是否有某种类型的地图实现支持 2 个单独的键?
例如,您可以执行put(Int, String, Value) 之类的操作,然后您就可以独立使用基于 Integer 或 String 的值。目前我只使用 2 个地图,但似乎会有更好的方法来做到这一点。
【问题讨论】:
-
将这两个地图包装在一个包含它们的类中?
标签: java dictionary hashmap
是否有某种类型的地图实现支持 2 个单独的键?
例如,您可以执行put(Int, String, Value) 之类的操作,然后您就可以独立使用基于 Integer 或 String 的值。目前我只使用 2 个地图,但似乎会有更好的方法来做到这一点。
【问题讨论】:
标签: java dictionary hashmap
回答你的问题:不。
你可以自己滚动:
class MyDataStore<T> {
private final Map<Integer, T> intMap = new HashMap<>();
private final Map<String, T> stringMap = new HashMap<>();
public void put(Integer keyI, String keyS, T datum) {
intMap.put(keyI, datum);
stringMap.put(keyS, datum);
}
public void remove(T datum) {
intMap.remove(datum);
stringMap.remove(datum);
}
public Map<Integer, T> asIntMap() {return Collections.unmodifiableMap(intMap);}
public Map<String, T> asStringMap() {return Collections.unmodifiableMap(stringMap);}
}
虽然很大程度上取决于您的用例。也许可以通过一件事来键入,然后对另一件事进行增量搜索?特别是如果你实际上没有很多元素。
【讨论】:
使用Map<Object, MyValueClass> 并将值存储在两个键下。
如果你真的想上课:
public class DoubleKeyMap<T> extends HashMap<Object, T> {
public void put(Object key1, Object key2, T value) {
put(key1, value);
put(key2, value);
}
}
现在可以在任一键下找到该值。
【讨论】: