首页 > 解决方案 > Java. how many times appears every symbol in matrix?

问题描述

There is 2-dimensional array 10x10, filled with random english letters(both uppercase and lowercase) How to count, how many times appears every symbol in array?

标签: javaarraysmultidimensional-array

解决方案


使用 Java 8 流:

import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class CountCharacter {
    public static void main(String[] args) throws Exception {

        Character[][] array = new Character[][] {
            {'A','B','C','D','E','F','G','H','I','J'},
            {'A','B','C','D','E','F','G','H','I','J'},
            {'A','B','C','D','E','F','G','H','I','J'},
            {'A','B','C','D','E','F','G','H','I','J'},
            {'A','B','C','D','E','F','G','H','I','J'},
            {'A','B','C','D','E','F','G','H','I','J'},
            {'A','B','C','D','E','F','G','H','I','J'},
            {'A','B','C','D','E','F','G','H','I','J'},
            {'A','B','C','D','E','F','G','H','I','J'},
            {'A','B','C','D','E','F','G','H','I','a'},
        };



        Map<Character, Long> data =Stream.of(array)
        .flatMap(Stream::of)
        .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
        System.out.println(data);
    }

}

在这里,我将一个数组转换为 stream ,然后将二维数组展平,然后转换为 HashMap ,其中键为字符,值为 count ->> Collectors.groupingBy(Function.identity(), Collectors.counting())

不使用 Java 流:

    HashMap<Character,Integer> hashMap =new HashMap<>();
    for (Character[] oneD: array) {
        for (Character elem: oneD) {
            hashMap.put(elem, hashMap.getOrDefault(elem, 0)+1);
        }
    }
    System.out.println(hashMap);

推荐阅读