Tan*_*nia 3 java guava java-8 java-stream
我有一个set multimap,它存储了一个月的一些字符串(整数).
MonthlyCount = {1:["hello"],2:["hello","hi"]}
Run Code Online (Sandbox Code Playgroud)
我有一个地图,计算每月的字符串数量并添加它们.我使用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);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用Java8的流和过滤器实现相同的行为?
您可以使用a 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));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |