jdk8流,如果metricName对象为空,则根据metricAliaseName来进行分组,将list转变为map,否则根据metricName来进行分组,将List转变为map
时间: 2024-02-18 17:00:04 浏览: 58
可以使用Java 8中Stream API的groupingBy()方法来实现根据metricName或metricAliaseName分组,然后将结果转换为Map。具体实现如下:
```
Map<String, List<Metric>> metricMap = metricList.stream()
.collect(Collectors.groupingBy(metric -> metric.getMetricName() != null ? metric.getMetricName() : metric.getMetricAliaseName()));
```
上述代码中,我们使用三目运算符来判断Metric对象的metricName是否为空,如果为空则使用metricAliaseName来分组,否则使用metricName来分组。最终得到一个Map,其中key为metricName或metricAliaseName,value为该key对应的Metric对象列表。
相关问题
jdk8流,如果metricName对象为空,则根据metricAliaseName来进行分组,将list转变为map
可以使用Java 8中Stream API的groupingBy()方法来实现根据metricAliaseName分组,然后将结果转换为Map。具体实现如下:
```
Map<String, List<Metric>> metricMap = metricList.stream()
.filter(metric -> metric.getMetricName() != null) // 过滤掉metricName为空的Metric对象
.collect(Collectors.groupingBy(Metric::getMetricAliaseName));
```
上述代码中,我们先使用filter()方法过滤掉metricName为空的Metric对象,然后使用groupingBy()方法根据metricAliaseName分组,最终得到一个Map,其中key为metricAliaseName,value为该metricAliaseName对应的Metric对象列表。
阅读全文