2012-06-08 5 views
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()); 
       } 

      } 

     } 
+1

В чем вопрос? –

+1

Почему бы вам просто не попробовать и не посмотреть, что происходит? – Joost

+0

Список params = (Список) hashMap.get (key); Я просто хотел узнать, будет ли новый список параметров обновляться в цикле while каждый раз или только значения из карты будут добавлены, скажем, DTO в соответствии с кодом, или каждый раз в цикле DTO будет добавлен в нулевой позиции Перечня. – ashwinsakthi

ответ

1

ли эта линия создать новый список или просто добавляет к списку

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

Ничего из этого - здесь есть только задание. Значение, связанное с key на этой карте, должно быть ссылкой на существующий объект List (или null), и это возвращается get. Затем эта ссылка присваивается params.

Поскольку локальная переменная params не существовала до этого объявления, в любом случае нет списка, чтобы добавить что-либо.

+0

@Peter --- вы хотите сказать, что объект DTO будет размещаться на 0-й позиции каждый раз. После завершения цикла следующий опорный код DTO помещается на 0-ю позицию, заменяя предыдущую ссылку DTO. – ashwinsakthi

4

Выражение, такие как

(List) hashMap.get(key); 

будет не создать новый список. Он вернет копию списка-ссылки, хранящейся на карте.

(И я не вижу никаких вызовов на add, так что я не вижу, как что-то может получить добавляться либо.)

0

В строке List params = (List) hashMap.get(key); params будет возвращаемым значением hashmap.get (key). Так что нет, там ничего не происходит.

Смежные вопросы