Cyr*_*rus 2 java lambda android java-8 java-stream
我想在遍历列表使用lambda时得到索引.
例如:
List<CheckBox> checkBoxes = null;
checkBoxes.forEach(checkBox -> {
if (checkBox.isSelected()) {
sb.append("index"); //I want to get checkbox index here
sb.append(",");
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:这checkBoxes = null;只是一个占位符,但一旦我开始编写代码就会正常使用.
我就是这样做的.
运行IntStream列表的索引.然后根据是否选中相应的复选框过滤索引.然后将索引值a 映射到索引值int的String表示中.最后,将字符串收集到结果字符串中,以逗号分隔.
码:
String result = IntStream.range(0, checkBoxes.size())
.filter(i -> checkBoxes.get(i).isSelected())
.mapToObj(String::valueOf)
.collect(Collectors.joining(","));
Run Code Online (Sandbox Code Playgroud)
输出将是类似的
0,1,3,6
Run Code Online (Sandbox Code Playgroud)
取决于实际检查的复选框.
我会避免使用,forEach因为你可以通过转换值而不是执行副作用来实现目标.我也会避免,List.indexOf因为它会线性搜索列表中的所需项目.如果你只有几个复选框,这不是什么大问题,但是如果你有很多,那么O(N ^ 2)增长将导致性能下降.
| 归档时间: |
|
| 查看次数: |
8133 次 |
| 最近记录: |