假设我有一个HashMaps的HashMap定义如下:
hashMap = new HashMap<String, HashMap<String, Integer>>();
我如何对此进行抽象以使定义更清晰?
答案 0 :(得分:2)
如果你不想再次重复这个定义你可以把它变成一个类,定义并不清楚,只是罗嗦..
class HashBrowns : HashMap<String, HashMap<String, Integer>>
答案 1 :(得分:2)
如果我正确地解释了您的问题,那么您有一个将对象映射到一起的集合,并想知道是否有一种方法可以做得更好。
最好是我们为每个元素定义一个目的,例如:
Map<String, // ZIP code (e.g. 6009)
Map<String, // Name (e.g. John Smith)
Integer>> // Age (e.g. 42)
在这种情况下,您可以创建以下类:
class Person {
private String name;
private Integer age;
// Constructor and getters etc.
}
这将您的收藏简化为:
Map<String, // ZIP/Postal code
List<Person>> // List of people in this postal code.
如果需要,您可以进一步简化它,但这可以让您了解要采取的步骤。最重要的是使用有意义的名称。
答案 2 :(得分:0)
你可以创建一个抽象的工厂类。通常这些都适合以通用方式为具体类型创建抽象包装器。工厂通常也被实施为单身人士。
答案 3 :(得分:0)
如果不了解您的具体情况,可以推荐的最佳方法是抽象出存储方法。
例如:
public Integer getNumber(String name, String attribute)
{
HashMap<String,Integer> subMap = hashMap.get(name);
if (subMap != null)
{
return subMap.get(attribute);
} else
{
return null;
}
}
public void setNumber(String name, String attribute, Integer number)
{
HashMap<String,Integer> subMap = hashMap.get(name);
if (subMap == null)
{
subMap = new HashMap<String,Integer>();
hashMap.put(name,subMap);
}
subMap.put(attribute,number);
}