说我有这样的定义包含HashMap的一个HashMap:如何在泛型中定义泛型?
hashMap = new HashMap<String, HashMap<String, Integer>>();
我怎么会抽象了本作的定义更加清晰?
说我有这样的定义包含HashMap的一个HashMap:如何在泛型中定义泛型?
hashMap = new HashMap<String, HashMap<String, Integer>>();
我怎么会抽象了本作的定义更加清晰?
如果我正确地解释你的问题,你有一个将对象映射在一起的集合,并想知道是否有办法做到更好。
这是最好的,如果我们定义每个元素的目的,所以作为一个例子:
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.
然后你可以进一步简化它,如果你想,但这会给你一个想要采取什么步骤的想法。最重要的是使用有意义的名称。
好主意,但不会'地图<邮编,地图
@emory这绝对易于理解,但引入了名称都是需要的类型。使用描述性对象Person来模拟实体之间的映射是我试图展示的主要观点。地图地图(可以说)在概念上更困难。 – Bringer128
您可以创建一个抽象工厂类。通常这些对于以通用方式为具体类型创建抽象包装很有用。工厂也常常以单身形式实施。
,如果你不希望有再次重复定义,你可以把它的一类,定义不明确,只是罗嗦..
class HashBrowns : HashMap<String, HashMap<String, Integer>>
不了解更多关于您的具体情况,可以推荐的最佳方法是抽象出存储方法的一些方法。
例如:
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);
}
你能解释一下什么是不太清楚呢? – mdma
你能详细说明你正在努力完成什么吗? –
你想更清楚些什么? – srchulo