java - 使用流检查除数检查数组
问题描述
我想知道是否可以执行下面的嵌套 for 循环,检查列表中的每个元素以及它的除数不等于 1 从同一列表中作为流的计数。如果是这样,是否会推荐它而不是传统的 for 循环?
示例输入 - “列表键”转换为“数组 - arr”。
int max = Integer.MIN_VALUE;
for(int i = 0; i < keys.size(); i++){
int count = 0;
for(int k = 0; k < keys.size(); k++){
if(arr[i] % arr[k] == 0 && arr[k] != 1){
count++;
}
}
max = Math.max(max,count);
}
解决方案
您可以使用streams
下面的方法来做到这一点,但是正如@Ralf Kleberhoff 提到的那样,streams
优于传统的优势for-loop
取决于各种因素,可读性很简洁,但对于调试或日志记录,我认为传统for-loop
的更好
int max = keys.stream()
.map(i -> IntStream.range(0, keys.size()).filter(k -> arr[i] % arr[k] == 0 && arr[k] != 1).count())
.max((o1, o2) -> Math.toIntExact(o1 - o2))
.map(Math::toIntExact).orElse(Integer.MIN_VALUE);
推荐阅读
- html - 仅使用 css 将 div 增加到一个方向
- r - how to count the number of event on one data.frame based on time period on another data.frame
- c# - 使用用户名和密码连接 gmail api
- java - 带有 MPAndroidChart 和图像的图形饼图
- c# - 无法在 ASP.NET Core 2.0 中启用 CORS
- python - Does Numpy's vstack create a new array - a copy of the ones it combines?
- regex - 用于删除所有垃圾邮件链接的正则表达式唯一的标识符是溢出:隐藏
- javascript - 如何隐藏指针事件但仍然能够启动拖动事件?
- java - java.lang.NumberFormatException:
- android - Kotlin 使用或在参数中?