这行:
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());
}
}
}
答案 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)的返回值。所以不,那里没有发生任何附加事件。