在HashMap中查找值的数量?

jav*_*999 11 java dictionary hashmap

什么是发现的总数最好/最有效的方式HashMap.

我不是指.size()方法,因为它计算键的数量.我想要所有键中的的总数.

我想这样做,因为我的钥匙是String,但我的价值是List.

Cla*_*oft 11

在Java 8中,您还可以使用StreamAPI:

int total = map.values()
               .stream()
               .mapToInt(List::size) // or (l -> l.size())
               .sum()
Run Code Online (Sandbox Code Playgroud)

这样做的好处是,您不必像在Java 8之前的解决方案中那样重复变量的List<Foo>类型for:

int total = 0;
for (List<Foo> list : map.values())
{
    total += list.size();
}
System.out.println(total);
Run Code Online (Sandbox Code Playgroud)

除此之外,虽然没有建议,但您也可以在不需要临时变量的情况下使用该值内联:

System.out.println(map.values().stream().mapToInt(List::size).sum());
Run Code Online (Sandbox Code Playgroud)


Sur*_*tta 8

最简单的是,迭代并添加列表大小.

int total = 0;
for (List<Foo> l : map.values()) {
    total += l.size();
}

// here is the total values size
Run Code Online (Sandbox Code Playgroud)