我有一个设置多图,它针对一个月(整数)存储一些字符串。
MonthlyCount = {1:["hello"],2:["hello","hi"]}
我有一张地图,该地图每月统计并添加字符串。我使用containsKey过滤器来检查键是否存在于集合中,并将其添加到地图中。
final String[] months = new DateFormatSymbols().getShortMonths();
final Map<String, Object> metaData = new LinkedHashMap<>();
private SetMultimap<Integer, String> MonthlyCount;
for (int i = 0; i <= month; i++) {
final int count = MonthlyCount.containsKey(i + 1) ? MonthlyCount.get(i + 1).size() : 0;
metaData.put(months[i], count);
}
有没有办法用Java8的流和过滤器实现相同的行为?
您可以使用IntStream
来迭代所需的范围,并用于Collectors.toMap
生成所需的地图:
Map<String,Integer> map =
IntStream.range(0,months.length)
.boxed()
.collect(Collectors.toMap(i->months[i],
i->MonthlyCount.containsKey(i + 1) ? MonthlyCount.get(i + 1).size() : 0));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句