【问题标题】:Is there a Java Map implementation that supports 2 keys?是否有支持 2 个键的 Java Map 实现?
【发布时间】:2020-06-09 16:29:33
【问题描述】:

是否有某种类型的地图实现支持 2 个单独的键? 例如,您可以执行put(Int, String, Value) 之类的操作,然后您就可以独立使用基于 Integer 或 String 的值。目前我只使用 2 个地图,但似乎会有更好的方法来做到这一点。

【问题讨论】:

  • 将这两个地图包装在一个包含它们的类中?

标签: java dictionary hashmap


【解决方案1】:

回答你的问题:不。

你可以自己滚动:

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);}
}

虽然很大程度上取决于您的用例。也许可以通过一件事来键入,然后对另一件事进行增量搜索?特别是如果你实际上没有很多元素。

【讨论】:

    【解决方案2】:

    使用Map&lt;Object, MyValueClass&gt; 并将值存储在两个键下。

    如果你真的想上课:

    public class DoubleKeyMap<T> extends HashMap<Object, T> {
        public void put(Object key1, Object key2, T value) {
            put(key1, value);
            put(key2, value);
        }
    }
    

    现在可以在任一键下找到该值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 2016-07-07
      • 1970-01-01
      • 2022-08-17
      相关资源
      最近更新 更多