概述
java foreach跳过第一次迭代
有没有一种优雅的方法可以跳过Java5 foreach循环中的第一次迭代?
伪代码示例:
for ( Car car : cars ) {
//skip if first, do work for rest
.
.
}
11个解决方案
62 votes
我不会称其为优雅,但可能比使用“第一个”布尔值更好:
for ( Car car : cars.subList( 1, cars.size() ) )
{
.
.
}
除此之外,可能没有优雅的方法。
Sean Adkinson answered 2020-01-07T02:35:04Z
54 votes
使用新的Java 8 Stream API,它实际上变得非常优雅。 只需使用skip()方法:
cars.stream().skip(1) // and then operations on remaining cars
Kao answered 2020-01-07T02:35:24Z
28 votes
使用番石榴Iterables.skip()。
就像是:
for ( Car car : Iterables.skip(cars, 1) ) {
// 1st element will be skipped
}
(从msandiford的答案结尾处得到此信息,并希望使其成为独立的答案)
yop83 answered 2020-01-07T02:35:52Z
26 votes
for (Car car : cars)
{
if (car == cars[0]) continue;
...
}
对我来说足够优雅。
elekwent answered 2020-01-07T02:36:12Z
18 votes
SeanA的代码有一个小错误:子列表的第二个参数被视为互斥索引,因此我们可以编写
for (Car car : cars.subList(1, cars.size()) {
...
}
(我似乎无法评论答案,因此无法评论新答案。我需要一定的声誉才能做到这一点吗?)
Daniel Lubarov answered 2020-01-07T02:36:37Z
6 votes
我有点迟了,但是您可以使用一个辅助方法,例如:
public static Iterable skipFirst(final Iterable c) {
return new Iterable() {
@Override public Iterator iterator() {
Iterator i = c.iterator();
i.next();
return i;
}
};
}
并使用像这样的东西:
public static void main(String[] args) {
Collection c = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
for (Integer n : skipFirst(c)) {
System.out.println(n);
}
}
对于读者来说,剩下的一般做法是跳过“ n” :)
编辑:仔细检查,我发现番石榴在这里有Iterables.skip(...)。
msandiford answered 2020-01-07T02:37:10Z
4 votes
我不是Java语言的人,但您可以使用:
通过Groovy JDK从java.util获得for ( Car car : cars.tail() )
Preet Sangha answered 2020-01-07T02:37:34Z
1 votes
优雅? 并不是的。 您需要检查/设置一个布尔值。
for-each循环在所有实际用途中都是使用迭代器的精美语法。 在开始循环之前,最好只使用迭代器并前进。
Brian Roach answered 2020-01-07T02:37:58Z
1 votes
不太优雅,但可以与迭代器一起使用
Iterator rows = array.iterator();
if (rows.hasNext()){
rows.next();
}
for (; rows.hasNext();) {
XXXXX row = (XXXXX) rows.next();
}
Angel answered 2020-01-07T02:38:18Z
1 votes
这可能并不完美,但是可以在for循环外初始化一个整数变量,并在循环内的每次迭代中将其递增。仅当计数器大于0时,程序才会执行。
int counter = 0;
for ( Car car : cars ) {
//skip if first, do work for rest
if(counter>0){
//do something
}
counter++;
}
Benjamin answered 2020-01-07T02:38:38Z
0 votes
您可以使用计数器。 尽管还没有那么成熟的编码,但我仍然找到跳过列表中第一个元素的最简单方法。
int ctr=0;
for(Resource child:children) {
if(ctr>0) { //this will skip the first element, i.e. when ctr=0
//do your thing from the 2nd element onwards
}
ctr++;
}
Sonakshi Sharma answered 2020-01-07T02:38:58Z
最后
以上就是懦弱飞鸟为你收集整理的java for 跳过_java foreach跳过第一次迭代的全部内容,希望文章能够帮你解决java for 跳过_java foreach跳过第一次迭代所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复