00001
00002
00003
00004
00005
00006
00007 package edu.tum.cs.util.datastruct;
00008
00013 public class ArraySlice<T> implements Iterable<T> {
00014 T[] a;
00015 int iFirst, iLast;
00016
00022 public ArraySlice(T[] a, int first, int end) {
00023 this.a = a;
00024 iFirst = first;
00025 if(iFirst < 0)
00026 iFirst += a.length;
00027 if(end < 0)
00028 end += a.length;
00029 else
00030 if(end > a.length)
00031 end = a.length;
00032 iLast = end-1;
00033 }
00034
00035 public ArraySlice(T[] a, int first) {
00036 this(a, first, a.length);
00037 }
00038
00039 public java.util.Iterator<T> iterator() {
00040 return new Iterator();
00041 }
00042
00043 protected class Iterator implements java.util.Iterator<T> {
00044 protected int iNext;
00045
00046 public Iterator() {
00047 iNext = iFirst;
00048 }
00049
00050 public boolean hasNext() {
00051 return iNext <= iLast;
00052 }
00053
00054 public T next() {
00055 return a[iNext++];
00056 }
00057
00058 public void remove() {
00059 throw new RuntimeException("remove is not supported by this iterator");
00060 }
00061 }
00062 }