java - 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?
解决方案
使用 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);
推荐阅读
- typescript - 打字稿转换器 - QuestionToken 丢失
- r - 带有 in_schema 的 tbl 返回“无效的对象名称”错误
- drupal-8 - 如何在 drupal 8 中使用 module_set_weight 函数?
- php - PHP中速记比较的动态计数
- html - 如何创建多行单选按钮html
- reactjs - React Native 如何使用地图在数组中添加对象?
- asp.net-core - 为什么 .NET 5.0.102 的 Context.User.Identity 突然为空?
- java - REST 文档是否必须包含每个请求参数的所有可能值?
- python - 第 21 行,在
os.startfile(fileName) AttributeError: 模块 'os' 没有属性 'startfile' - python - sqlalchemy.exc.ArgumentError: Object category_tb('23','cat1','cat1desc','0') 作为 SQL 文字值不合法