当前位置: 代码迷 >> java >> 如何在MultivaluedMap中找到键的长度/大小?
  详细解决方案

如何在MultivaluedMap中找到键的长度/大小?

热度:118   发布时间:2023-07-17 20:53:04.0
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");

如何找到“接受编码”键的大小?

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();

您应该了解为什么使用通用版本比原始版本更好。

使用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());
        }
  相关解决方案