Map<String, Long> designNameCountMap 使用stream获取Long值最小的那条数据的key
时间: 2024-10-17 12:06:07 浏览: 14
JDK8通过Stream 对List,Map操作和互转的实现
5星 · 资源好评率100%
`Map<String, Long>` 类型的设计名计数 map 中,如果想要通过 Stream API 获取 Long 值最小的(即设计名称对应最少次计数的那个)键(key),你可以按照以下步骤操作:
1. 首先,你需要将 map 转换成 Stream,这可以通过 `values()` 函数完成,它返回一个包含所有值的 Stream:
```java
Stream<Long> longValuesStream = designNameCountMap.values();
```
2. 接着,你可以对这个长整型值的 Stream 进行排序,选择最小值。因为默认排序是升序,所以最小的值会在最前面:
```java
Long minValue = longValuesStream.min(); // 获取最小值
```
3. 最后,利用 `minValue` 作为条件筛选出对应的 key,这里需要找到那个值等于最小值的所有键。由于 Java 的 Stream API 没有直接的方法来根据值反向查找键,我们需要借助额外的循环或辅助函数:
```java
Optional<Map.Entry<String, Long>> minEntry = designNameCountMap.entrySet().stream()
.filter(entry -> entry.getValue() == minValue)
.findAny(); // 找到任意一个匹配的映射
String smallestKey = minEntry.map(Map.Entry::getKey).orElse(null); // 如果找不到则返回 null
```
注意:如果没有值为最小值的项,则 `minEntry` 会为空,此时 `smallestKey` 也是 `null`。
阅读全文