转换时List的新实例

时间:2012-06-08 12:01:25

标签: java

这行:

List params = (List) hashMap.get(key);

创建一个新列表,或者只是将其附加到列表中?

以下是我使用代码的方式:

ParameterCache cache = ParameterCache.getInstance();
        HashMap hashMap = cache.getAllParameters(ParameterCodeConstants.PARAMETER_DORF_REGION, false);
        ArrayList regionIdList=new ArrayList();
        Set keys = hashMap.keySet();
        Iterator it = keys.iterator();
        while (it.hasNext()) {
            BigDecimal key = (BigDecimal) it.next();
            List params = (List) hashMap.get(key);
            if (params != null && params.size() > 0) {
                ParameterDTO paramDTO = (ParameterDTO) params.get(0);

                String textValue = paramDTO.getParameterTextValue();
                if(textValue.equals(region_id)){
                    regionIdList.add(paramDTO.getRegion());
                }

            }

        }

3 个答案:

答案 0 :(得分:4)

表达式,如

(List) hashMap.get(key);

创建新列表。它将返回存储在地图中的List-reference的副本。

(我没有看到对add的任何调用,所以我看不出有什么东西可以附加。)

答案 1 :(得分:1)

  

此行是否会创建新列表或只是附加到列表

List params = (List) hashMap.get(key);

这些都没有 - 这里只进行了一项任务。此映射中与key关联的值应该是对现有List对象(或null)的引用,并由get返回。然后将此引用分配给params

由于本声明之前不存在局部变量params,因此无论如何都没有要附加任何内容的列表。

答案 2 :(得分:0)

在行List params = (List) hashMap.get(key);中,params将是hashmap.get(key)的返回值。所以不,那里没有发生任何附加事件。