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

  • Post author:
  • Post category:java


替换迭代器

我们先来回忆一下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);

}

}

}

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



版权声明:本文为weixin_42413377原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。