0

这条线:

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());
                }

            }

        }
4

3 回答 3

4

诸如此类的表达式

(List) hashMap.get(key);

不会创建新列表。它将返回存储在地图中的列表引用的副本。

(而且我没有看到任何调用,add所以我也看不到如何附加任何内容。)

于 2012-06-08T12:04:36.367 回答
1

此行是创建一个新列表还是只是附加到列表中

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

这些都不是——这里只有一个任务。此映射中与 关联的值key应该是对现有List对象(或null)的引用,并且由get. 然后将此引用分配给params

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

于 2012-06-08T12:05:26.400 回答
0

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

于 2012-06-08T12:05:31.950 回答