try*_*arn 6 java apache-commons java-8
是否可以在Java中的for循环中指定索引/范围?
例如,我有一个列表: List<String> list;
我想从索引1而不是0运行一个for循环:
for(String s : list(start from index 1))
Run Code Online (Sandbox Code Playgroud)
或直到索引5
for(String s : list(end at index 5))
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用传统的for循环,也可以在增强的for循环中保留一个计数器,但是我想知道Java或apache集合中是否有一些现成的东西?
ern*_*t_k 16
我将subList在这种情况下使用:
for(String s : list.subList(1, list.size()))
Run Code Online (Sandbox Code Playgroud)
和
for(String s : list.subList(0, 6))
Run Code Online (Sandbox Code Playgroud)
使用of sublist更好,但流版本使用skipand limit:
list.stream().skip(1) .... limit(6).....
Run Code Online (Sandbox Code Playgroud)
传统的 for 循环是针对此需求的“开箱即用”解决方案:
for (int i = 1; i < list.size(); i++) {
String s = list.get(i);
...
}
Run Code Online (Sandbox Code Playgroud)
和(如果List至少有 5 个元素):
for (int i = 0; i < 5; i++) {
String s = list.get(i);
...
}
Run Code Online (Sandbox Code Playgroud)
在Java 8中,我们具有Stream API,可用于通过自定义索引遍历List:
List<String> evenIndexes = IntStream
.range(0, names.length)
.filter(i -> i % 2 == 0)
.mapToObj(i -> names[i])
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
在该range方法中,您可以从1开始,和/或迭代到5。