英文:
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<Key, Object>
I dont know if a HashMap<String, HashMap<String, Object>>
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<Key,Object> map;
Object value = map.get(new Key(type, qualifier));
// 'Simple' key object, don't do this
Map<String, Map<String, Object> map;
Map<String, object> 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!
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论