Java 强制转换时列表的新实例
这条线:Java 强制转换时列表的新实例,java,Java,这条线: List params = (List) hashMap.get(key); 创建一个新列表,或者只是将其附加到列表中 以下是我如何使用代码: ParameterCache cache = ParameterCache.getInstance(); HashMap hashMap = cache.getAllParameters(ParameterCodeConstants.PARAMETER_DORF_REGION, false); ArrayLis
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());
}
}
}
一种表达,如
(List) hashMap.get(key);
不会创建新列表。它将返回存储在映射中的列表引用的副本
(我没有看到任何对add
的调用,因此我也看不到任何东西是如何被追加的。)一个表达式,例如
(List) hashMap.get(key);
不会创建新列表。它将返回存储在映射中的列表引用的副本
(我没有看到任何对add
的调用,因此我也不知道如何添加任何内容。)
这一行是创建一个新的列表还是只是附加到列表中
List params = (List) hashMap.get(key);
所有这些都没有-这里只进行了一项任务。此映射中与键
关联的值应该是对现有列表
对象(或null
)的引用,该值由get
返回。然后将该引用分配给参数
由于局部变量params
在此声明之前不存在,因此没有任何可附加的列表
这一行是创建一个新的列表还是只是附加到列表中
List params = (List) hashMap.get(key);
所有这些都没有-这里只进行了一项任务。此映射中与键
关联的值应该是对现有列表
对象(或null
)的引用,该值由get
返回。然后将该引用分配给参数
由于局部变量
params
在此声明之前不存在,因此没有任何要追加的列表。行list params=(list)hashMap.get(key)
,params将是hashmap.get(key)的返回值。因此,不存在追加操作。在List params=(List)hashMap.get(key)行中
,params将是hashmap.get(key)的返回值。所以不,这里没有追加操作。为什么不试试看会发生什么呢?List params=(List)hashMap.get(key);我只是想知道是否每次都会在while循环中新创建params list,或者只是根据代码将map中的值附加到dto中,或者每次在循环中,DTO都将被添加到列表的第0个位置。谢谢大家…在我自己尝试之后才找到答案…正如前面所讨论的,它只是对DTO对象的引用,并且在每次处理循环时都会刷新。没有附加发生。为什么不尝试一下,看看会发生什么?列表params=(List)hashMap.get(key);我只是想知道是否每次都会在while循环中新创建params list,或者只是根据代码将map中的值附加到dto中,或者每次在循环中,DTO都会被添加到列表的第0个位置。谢谢大家…我自己尝试后才找到答案…正如前面讨论的,它只是对DTO对象的引用,并且在每次处理循环时都会刷新..没有附加发生..@Peter--你的意思是说DTO对象会每次放置在第0个位置。循环完成后,下一个DTO引用将放置在第0个位置,替换上一个DTO引用。@Peter--您的意思是说DTO对象将每次放置在第0个位置。循环完成后,下一个DTO引用将放置在第0个位置,替换以前的DTO参考。