我想传递一个包含Keyview的键和值的Map, 从争论
获取地图时,这两种方法中的哪一种是一种很好的做法Map<String, List<String>> mMap;
public static void add(Map<String, List<String> map) {
mMap = map; // direct get and assign to map object
}
public static void add(Map<String, List<String> map) {
try {
//Copies all of the mappings from the specified map to this map
mMap.putAll(map);
} catch (Exception e) {
}
}
在2方法中,这是将map参数的值赋值给新Map对象的正确方法吗?
答案 0 :(得分:3)
您的第一种方法不是添加,而是替换,因此第二种方法是首选方法。但第二个将失败,因为您的对象未初始化,因此为null。
答案 1 :(得分:0)
首先,静态事物在使用中并不是最好的(性能 - 可能很低)。 第二种方法更好。
public void add(Map<String, List<String> map)
{
try
{
//Copies all of the mappings from the specified map to this map
mMap.putAll(map);
}
catch (Exception e)
{
}
答案 2 :(得分:0)
直接分配集合被认为是一种不好的做法。原因是,如果你这样做,可能有人可以改变你班级以外没有任何机会了解变化的地图内容。因此,您的类的功能可能会变得不一致甚至抛出异常,因为在您的类处理映射之间可以更改映射或事件。
答案 3 :(得分:0)
您可以使用此实施:Guava Multimap
Guava已经成为各种项目的标准库。
答案 4 :(得分:0)
首先,您应该考虑将对象传递给方法时,如果在该方法中更改它,则更改将影响参数,因此它就是这一切。如果您想要更改方法内的参数(在此处显示),应该使用第一种方式,如果(可能在大多数情况下)您不想要参数(map)在方法内部发生变化,只想使用其中的值应使用第二种方法。
顺便说一下,我使用should
作为您提供的选项,虽然还有其他方法,但理念是相同的。