use*_*882 2 java collections data-structures
情况就是这样
private Map<String, Map<String, Map<String, String>>> properties;
Run Code Online (Sandbox Code Playgroud)
我想要访问所有级别 - 获取Map<String, Map<String, String>>,Map<String, String>或者只是String从内部地图.
这可以用更好的方式来避免这种嵌套结构吗?创建一个隐藏实现并提供简单方法的包装器是显而易见的解决方案,但它只是隐藏了主要问题.
我喜欢这种Key方法.
public class Key {
private String keyA;
private String keyB;
private String keyC;
public Key(String a, String b, String c) {
keyA = "".equals(a) ? null : a;
keyB = "".equals(b) ? null : b;
keyC = "".equals(c) ? null : c;
}
public String getKey(){
return keyA + keyB + keyC;
}
// equals() can be implemented using getKey()
}
Run Code Online (Sandbox Code Playgroud)
然后:
Map<Key, String> map = new HashMap<Key, String>();
map.put(new Key("a", "",""), "only one key");
map.put(new Key("a", "b", "c"), "all keys");
Run Code Online (Sandbox Code Playgroud)
请注意,您只需要一个地图,并且仍然可以获得一个对象,keyA因为它将具有不同的键值.
当然,如果你想存储具有相同索引的多个对象(或者恢复以相同的键开头的多个对象,就像在恢复中一样,Key("a", "a", "a")并且Key("a", "a", "b)在搜索Key("a", "a", "")时它将不起作用.但是,Map不管怎样,你不应该使用,并且应该得到一个合适的数据库.
| 归档时间: |
|
| 查看次数: |
445 次 |
| 最近记录: |