月(整数)に対していくつかの文字列を格納するセットマルチマップがあります。
MonthlyCount = {1:["hello"],2:["hello","hi"]}
1か月あたりの文字列の数を数え、それらを追加するマップがあります。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]
コメントを追加