package com.iterator;
public interface Iter {
int next();
boolean hasNext();
}
package com.iterator;
public class ArrayIter implements Iter {
private int[] array;
private int index;
public ArrayIter(int[] array) {
super();
this.array = array;
this.index=0;
}
@Override
public int next() {
// TODO Auto-generated method stub
return array[index++];
}
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return index<array.length;
}
}
package com.iterator;
import java.util.List;
public class ListIter implements Iter {
private List<Integer> list;
private int index;
public ListIter(List<Integer> list) {
super();
this.list = list;
this.index = 0;
}
@Override
public int next() {
// TODO Auto-generated method stub
return list.get(index++);
}
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return index < list.size();
}
}
package com.iterator;
public class ContextEnv {
public int getSumList(Iter it){
int sum=0;
while(it.hasNext()){
sum+=it.next();
}
return sum;
}
}
package com.iterator;
import java.util.Arrays;
import java.util.List;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
ContextEnv lContextEnv = new ContextEnv();
int[] arr = { 1, 2, 3, 5 };
int sum1 = lContextEnv.getSumList(new ArrayIter(arr));
System.err.println(sum1);
//
List<Integer> list = Arrays.asList(1, 2, 3, 5);
int sum2 = lContextEnv.getSumList(new ListIter(list));
System.err.println(sum2);
}
}