从java中的方法中的参数获取Map值的最佳实践?

时间:2014-03-03 08:40:16

标签: java map

我想传递一个包含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对象的正确方法吗?

5 个答案:

答案 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作为您提供的选项,虽然还有其他方法,但理念是相同的。