我有一个包含活动的文件(开始时间,结束时间和名称)。我必须过滤持有时间少于5分钟的90%监控样本的活动,并将结果收集到仅包含不同活动名称的列表中。
我做了两张地图,一张是活动名称的关键字,另一张是活动名称的值,以及活动名称和关键字的值,以及持续时间不超过5分钟的值。现在我想过滤第一张地图,这样我就可以只列出90%的情况下持续时间少于5分钟的活动。
我不认为这种方法非常好,看起来很可疑+我有一个错误,说map1必须是最终的
map1 = list.stream().collect(groupingBy(a-> a.getAct(), counting()));
map2 = list.stream()
.filter(a-> a.getDuration().toMinutes() <= 5)
.collect(groupingBy(a-> a.getAct(), counting()));
list90 = (List) map2.entrySet().stream()
.filter(a -> a.getValue() == 0.9 * map1.get(a.getKey() ) )
.map(x->x.getKey())
.collect(Collectors.toList());
编辑:
错误是
在封闭范围内定义的局部变量map1必须是最终的或有效的最终