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");
如何找到“Accept-Encoding”键的大小?
答案 0 :(得分: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();
您应该明白为什么使用通用版本比原始版本更好。
答案 1 :(得分: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());
}