如何用Java Stream将字符串数组转为统计'1'数量的int数组(单语句实现)
解决Java单语句统计字符串数组中'1'的出现次数问题
直接把统计逻辑内联到lambda表达式中即可,正确的单语句实现如下:
String[] b = {"00101010", "10010", "11111"}; int[] c = Arrays.stream(b).mapToInt(r -> (int) r.chars().filter(ch -> ch == '1').count()).toArray();
错误原因说明
你之前替换时出错,是因为在lambda上下文里误用了未定义的变量:
- 原方法里的
string对应lambda中的当前元素参数r,不能直接写string; - 因为我们固定统计字符'1',不需要
x变量,直接写ch == '1'即可。
误用未定义变量会导致编译器报错,修正变量引用并硬编码目标字符后就能正常运行。
内容的提问来源于stack exchange,提问作者Anil Bhat
相关产品推荐
相关产品推荐

