您的位置:首页 > 编程语言 > Java开发

java中增强for循环的原理

2015-01-23 23:21 405 查看
java中增强for循环的原理

增强for循环的语句如下:

for(ElementType element:arrayName){};

遍历数组

int[] arr = {1,2,3};

for(int i = 0; i < arr.length; i++) {

System.out.println(arr[i]);//1,2,3

}

for(int e : arr) {

System.out.println(e);//1,2,3

}

遍历List

List<String> list = new ArrayList<String>();

list.add("aaa");

list.add("bbb");

list.add("ccc");

for(int i = 0; i < list.size(); i++) {

String s = list.get(i);

System.out.println(s);

}

for(String s : list) {

System.out.println(s);

}

遍历Set

Set<String> set = new HashSet<String>();

set.add("a");

set.add("b");

set.add("c");

Iterator it = set.iterator();

while(it.hasNext()) {

System.out.println(it.next());

}

for(String s : set) {

System.out.println(s);

}

遍历Map

Map<String,String> map = new HashMap<String,String>();

map.put("a", "a");

map.put("b", "b");

map.put("c", "c");

Set<Entry<String,String>> entrySet = map.entrySet();

for(Entry<String,String> entry : entrySet) {

System.out.println(entry.getKey() + "=" + entry.getValue());

}

原理

任何实现了iterable接口的类,都有返回iterator的方法,也就是说其实增强for循环的底层是迭代器,任何实现了iterable接口的类都可以使用增强for循环来遍历。

下面就通过一个具体的事例来说明

class demo implements Iterable<String>{

private String patm;

public demo(String patm) {

this.patm = patm;

}

public Iterator<String> iterator() {

return new Iterator<String>() {

private String[] dmeoArray = patm.split("\\s+");//使用正则表达式处理空格

private int index = 0;//表示从0下标开始遍历!

public boolean hasNext() {

return index < demoArray.length;

}

public String next() {

return demoArray[index++];

}

public void remove() {

throw new UnsupportedOperationException("error");

}

};

使用JUNIT测试方法如下

@Test

public void fun() {

demo d = new demo("demo1 demo2 demo3 demo4");

for(String s : d) {

System.out.println(s);

}

}

输出的结果将遍历整个数组。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: