使用Map嵌套在另一个Map中或者在对象中。

huangapple go评论68阅读模式
英文:

Use a Map in a Map or an object

问题

我有一个像这样的映射表

这个类被用作键

class Key {
    private final String type;
    private final String qualifier;
    // 获取器,equals和hashCode方法
}

这个映射表是 HashMap<Key, Object>

我不知道 HashMap<String, HashMap<String, Object>> 是否会是一个更好的选择。
(在这种情况下,映射表会是一个关系,类似于
keyType -> {keyQualifier -> value, otherQualifier -> value})

请留下示例。

英文:

I've a Map like this

This class used as key

class Key {
    private final String type;
    private final String qualifier;
    // getters, equals and hashCode
}

The map is HashMap&lt;Key, Object&gt;

I dont know if a HashMap&lt;String, HashMap&lt;String, Object&gt;&gt; can be a better option or not.
(In this case the map be like a relation of
keyType -> {keyQualifier -> value, otherQualifier -> value})

Please leave examples

答案1

得分: 0

我认为你的尝试很不错。使用你的键对象来访问对象可能会更快一些(只需一个 get() 调用),而且更易读。

// 复杂的键对象
Map<Key, Object> map;
Object value = map.get(new Key(type, qualifier));

// '简单' 键对象,请不要这样做
Map<String, Map<String, Object>> map;
Map<String, Object> tmpMap = map.get(type); // 这实际上很难理解
Object value = tmpMap.get(qualifier));

但不要忘记,必须正确实现 hashCode() 和 equals() 方法!

英文:

I think your attempt is good. It's probably a bit faster faster (just one get() call) and more readable to access an object with your key object than.

// Complex key object
Map&lt;Key,Object&gt; map;
Object value = map.get(new Key(type, qualifier));

// &#39;Simple&#39; key object, don&#39;t do this
Map&lt;String, Map&lt;String, Object&gt; map;
Map&lt;String, object&gt; tmpMap = map.get(type); // that is actually confusing to read
Object value = tmpMap.get(qualifier));

But don't forget, hashCode() and equals() must be implemented correctly!

huangapple
  • 本文由 发表于 2020年10月2日 13:43:24
  • 转载请务必保留本文链接:https://go.coder-hub.com/64166681.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定