要實現一個可以用可以用foreach循環的類就必須實現Iterable這個幾口,接口中重寫一個iterator方法,這個方法返回一個 Iterator<E>接口。
代碼如下:
public class IterTest implements Iterable<String> {
//存儲內容的數組
private Object[] obj=new Object[1];
//記錄添加元素的個數
private int size;
//記錄當前元素的下標
private int current=0;
//添加元素
public void add(String str){
//判斷數組是否已經滿了如果滿了擴張數組
if(size==obj.length){
//擴張數組到一個新長度
obj=Arrays.copyOf(obj, obj.length+obj.length<<1);
}
obj[size++]=str;
}
//重寫iterator方法
public Iterator<String> iterator() {
定義實現了Iterator的內部類
class iter implements Iterator<String>
{
@Override
public boolean hasNext() {
// 判斷當前指針是否小於實際大小
if(current<size){
return true;
}
return false;
}
@Override
public String next() {
// 返回當前元素,並把當前下標前移
return obj[current++].toString();
}
@Override
public void remove() {
// TODO Auto-generated method stub
}
}
// 返回自定義的Iteraror子類
return new iter();
}
}
