亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Java 8 中填充地圖?

如何在 Java 8 中填充地圖?

慕的地8271018 2022-06-04 16:54:42
private static Map<Character, Integer> populateMap(List<Character> chars) {    final Map<Character, Integer> inputStringCountMap  = new HashMap<Character, Integer>();    for (Character ch : chars) {        int val = 0;        if (inputStringCountMap.containsKey(ch)) {            val = inputStringCountMap.get(ch);        }        inputStringCountMap.put(ch, val + 1);    }    return inputStringCountMap;}上面的函數只是用 each 的計數來填充 Map char。在 Java 8 中是否有更短/更簡潔的方法來做到這一點?
查看完整描述

3 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

 private static Map<Character, Long> populateMap(List<Character> chars) {


    return chars.stream()

            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));


}


查看完整回答
反對 回復 2022-06-04
?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

如果你對 aMap<Character, Long>沒問題,一個帶有計數子收集器的分組收集器應該這樣做:

Map<Character, Long> result = chars.stream().collect(
    Collectors.groupingBy(Function.identity(), Collectors.counting());

如果您要求值類型為Integer,則可以使用地圖收集器來完成:

Map<Character, Integer> result = chars.stream().collect(
    Collectors.toMap(Function.identity(), c -> 1, Integer::sum);


查看完整回答
反對 回復 2022-06-04
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

你可以嘗試這樣的事情。


Map<Character,Integer> myFreq= new HashMap<>();

for (char ch : input.toCharArray()) {

    myFreq.put(ch, myFreq.getOrDefault(ch, 0) + 1);

}


查看完整回答
反對 回復 2022-06-04
  • 3 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號