java新for循环_[Java5新特性]加强For循环

替换迭代器

我们先来回忆一下Java中的迭代器的用法,可以使用迭代器的有List和Set集合。原因在于它们都实现了Collection接口,而Collection接口拥有一个叫做Iterable父接口。下面我们来看一个案例:

public class Demo {

@Test

public void demo() {

List list = new ArrayList();

list.add("hello");

list.add("world");

Iterator iterator = list.iterator();

while (iterator.hasNext()) {

String string = iterator.next();

System.out.println(string);

}

}

}

在Java 5版本后,提供了加强For循环来替代原本的迭代器。我们来看以下代码:

public class Demo {

@Test

public void demo() {

List list = new ArrayList();

list.add("hello");

list.add("world");

for (String string : list) {

System.out.println(string);

}

}

}

通过以上两段代码,我们可以看出,输出结果是完全一样。但是,在写法上,加强For循环更加简洁。

加强For作用

在实际使用中,加强For循环都有哪些作用呢?我们分别来讨论一下。

第一种用法:可以用于循环实现Iterable接口的所有集合,例如上面的案例:

public class Demo {

@Test

public void demo() {

List list = new ArrayList();

list.add("hello");

list.add("world");

for (String string : list) {

System.out.println(string);

}

}}

第二种用法:可以用于循环数组。

public class Demo {

@Test

public void demo3() {

String[] arr = { "hello", "world" };

for (String string : arr) {

System.out.println(string);

}

}

}

需要注意的问题

掌握了加强For循环的用法,下面我们就来思考一下,加强For循环在实际运用中,有哪些需要注意的问题呢?

利用加强For循环遍历数组或集合时,只能从头到尾,不能遍历部分内容。

利用加强For循环遍历数组或集合时,不能获取当前元素的索引值。

加强For循环只是迭代器的一种替换方式。

深入加强For

既然加强For循环可以遍历所有实现Iterable接口的集合,那我们可以不可以自定义一个实现Iterable接口的集合,再利用加强For来遍历呢?

下面我们就自定义一个实现Iterable接口的集合类:

public class Word implements Iterable {

private String[] words;

public Word(String s) {

words = s.split("\\s+");

}

@Override

public Iterator iterator() {

return new Iterator() {

private int index = 0;

public boolean hasNext() {

return index < words.length;

}

public Object next() {

return words[index++];

}

public void remove() {}

};

}

}

然后,我们进行测试:

public class Demo {

@Test

public void demo4() {

Word word = new Word(

"hello world javaWeb css html el jstl jsp servlet response");

for (Object obj : word) {

System.out.println(obj);

}

}

}

转载说明:请注明作者及原文链接,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值