001package headfirst.iterator.dinermergeri; 002 003import java.util.Iterator; 004 005@SuppressWarnings("rawtypes") 006public class DinerMenuIterator implements Iterator { 007 MenuItem[] list; 008 int position = 0; 009 010 public DinerMenuIterator(MenuItem[] list) { 011 this.list = list; 012 } 013 014 public Object next() { 015 MenuItem menuItem = list[position]; 016 position = position + 1; 017 return menuItem; 018 } 019 020 public boolean hasNext() { 021 if (position >= list.length || list[position] == null) { 022 return false; 023 } else { 024 return true; 025 } 026 } 027 028 public void remove() { 029 if (position <= 0) { 030 throw new IllegalStateException 031 ("You can't remove an item until you've done at least one next()"); 032 } 033 if (list[position-1] != null) { 034 for (int i = position-1; i < (list.length-1); i++) { 035 list[i] = list[i+1]; 036 } 037 list[list.length-1] = null; 038 } 039 } 040}