我编写了以下方法来查找映射到最高值的键,然后尝试转换为java Stream
。你能帮忙吗?
private List<Integer> testStreamMap(Map<Integer, Long> mapGroup)
{
List<Integer> listMax = new ArrayList<Integer>();
Long frequency = 0L;
for (Integer key : mapGroup.keySet()) {
Long occurrence = mapGroup.get(key);
if (occurrence > frequency) {
listMax.clear();
listMax.add(key);
frequency = occurrence;
} else if (occurrence == frequency) {
listMax.add(key);
}
}
return listMax;
}
您可以通过以下方式获得一个钥匙
Integer max=mapGroup.entrySet().stream().max(Map.Entry.comparingByValue()).get().getKey();
但不幸的是,没有内置函数可以获取所有等效的最大值。
最简单,直接的解决方案是先找到最大值,然后再检索映射到该值的所有键:
private List<Integer> testStreamMap(Map<Integer, Long> mapGroup) {
if(mapGroup.isEmpty())
return Collections.emptyList();
long max = mapGroup.values().stream().max(Comparator.naturalOrder()).get();
return mapGroup.entrySet().stream()
.filter(e -> e.getValue() == max)
.map(Map.Entry::getKey)
.collect(Collectors.toList());
}
“ 如何强制max()返回JavaStream中的所有最大值?
”中讨论了单次获取流的所有最大值的解决方案。”。您将看到,如果您的输入是普通的Map
(例如HashMap
),可以很便宜地进行多次迭代,那么单遍解决方案将变得更加复杂并且不值得付出努力。
我编写了以下方法来查找映射到最高值的键,并尝试转换为java。你能帮忙吗?
问题内容: 我有许多具有不同z-index的div元素。我想在这些div中找到最高的z索引-如何实现呢? CSS: HTML: 我不认为这条线可以找到最高的z-index。 问题答案: 请注意,z-index仅影响定位的元素。因此,即使您为其分配了值,带有的任何元素也不会具有z- index。在诸如Google Chrome之类的浏览器中尤其如此。 像这样的通用jQuery选择器与返回一个值的选项
我一直在研究这三个网站,了解如何使用log4j2创建地图查找(或任何其他查找): http://logging.apache.org/log4j/2.x/manual/extending.html#Lookups http://logging.apache.org/log4j/2.x/manual/lookups.html http://logging.apache.org/log4j/2.x/m
我是streams的新手,我试图在这个映射中筛选键/值对中的第一个真值,然后我想返回字符串键,并用false替换真值。 我有一个字符串/布尔值的地图: 这就是我卡住的地方——我可能也做错了第一部分,但是我不确定如何在同一个流中返回字符串值和替换布尔值?我打算在这里尝试使用收集来处理返回值,但是我想如果我这样做了,它可能会返回一个Set,而不仅仅是字符串。 我可以这样做,但我更愿意尝试返回字符串。我
问题内容: 我有3个div。 像这样: 他们将充满文字。我不确定多少。问题是,所有高度都必须相等。 我如何使用jQuery(或CSS)查找DIV最高的并将其他两个设置为相同的高度,从而创建3个相等高度的DIV。 这可能吗? 问题答案: 您不能轻松地通过高度选择或在CSS中进行比较,但是jQuery和一些迭代应该可以轻松解决此问题。我们将遍历每个元素并跟踪最高的元素,然后再次遍历并将每个元素的高度设
我有一节这样的课 如果我有一个此类对象的列表,如下所示