2015-07-30 2 views

ответ

1

MultivaluedMap<K, V> реализует Map<K,List<V>> так

((Map<String,List<String>>)map).get("Accept-Encoding").size(); 

Теперь я вижу, что вы использовать не дженерик (который не является хорошей идеей):

Map tmp = map instanceof Map ? (Map) map : new HashMap(); 
// because you don't use generic you should get value as an Object instance 
Object value = tmp.get("Accept-Encoding"); 
// by default we assume that there the value is not a List instance 
int size = 0;  

// for security we check that the value instance implements List interface 
if (value instanceof List) { 
    // we check size of that list 
    size = ((List) value).size(); 
} 

короткая версия (без проверки) :

((List) ((Map) map).get("Accept-Encoding")).size(); 

Вы должны увидеть, почему использование стандартной версии лучше, чем исходная версия.

+0

Привет Lukas, Можете ли вы найти обновленный код и предложить мне.? –

+0

@RakeshB Я обновил ответ – lukaslew

0

Использование map.get(itr.next()).size()

Код:

MultivaluedMap map= new MultivaluedMapImpl(); 
map.add("Accept-Encoding", "compress;q=0.5"); 
map.add("Accept-Encoding", "gzip;q=1.1"); 
map.add("Accept-Encoding", "gzip;q=1.2"); 
map.add("Accept-Encoding", "gzip;q=1.3"); 

Iterator itr = map.keySet().iterator(); 
     while (itr.hasNext()) { 
      System.out.println(map.get(itr.next()).size()); 
     } 
Смежные вопросы