在Java中转换为For to do

时间:2017-02-27 11:16:24

标签: java

 for (String item : someList) {
     System.out.println(item);
 }

使用“do while”等同于?

感谢的。

2 个答案:

答案 0 :(得分:3)

如果列表为空,则for循环不会创建任何输出。所以等效的while循环是这样的:

    if (!someList.isEmpty()) {
        Iterator<String> iterator = someList.iterator();
        do {
            System.out.println(iterator.next());
        } while (iterator.hasNext());
    }

如果在do while循环之前没有检查空列表,则会得到NoSuchElementException

答案 1 :(得分:2)

List<String> someList = new ArrayList<>();
//put some values
for (String item : someList) {
     System.out.println(item);
}

以前代码的等价物是:

int i = 0;
do {
    System.out.println(someList.get(i));
    i++;
} while (i < someList.size());

修改

或者像@Bathsheba在评论中提到的那样你可以使用hasNext()

//convert your List to Iterator
Iterator<String> itr = someList.iterator();

然后你可以循环抛出你的itr:

do {
    System.out.println(itr.next());
} while (itr.hasNext());

注意

如果您不确定您的列表或itr是否为空,您应该在循环删除列表之前检查,如@cybi提及的答案。

if(!list.isEmpty()){
   //loop throw your list or iterator
}
祝你好运。