1 9 package org.ozoneDB.DxLib; 10 11 17 public class DxListIterator extends DxAbstractIterator { 18 19 final static long serialVersionUID = 1L; 20 21 DxListCollection list; 22 DxListNode node; 23 Object currentObject; 24 25 26 28 public DxListIterator( DxListCollection _list ) { 29 list = _list; 30 reset(); 31 } 32 33 34 36 public Object object() { 37 return currentObject; 38 } 39 40 41 43 public Object next() { 44 if (atFirstObject) { 45 atFirstObject = false; 46 } else { 47 if (currentObject != null && !objectRemoved) { 48 node = node.next(); 49 } 50 objectRemoved = false; 51 } 52 currentObject = node != null ? node.data() : null; 53 return currentObject; 54 } 55 56 57 59 public void reset() { 60 node = list.head().next(); 61 atFirstObject = true; 62 objectRemoved = false; 63 currentObject = null; 64 } 65 66 67 69 public Object removeObject() { 70 Object answer = currentObject; 71 if (currentObject != null && !objectRemoved) { 72 DxListNode delNode = node; 73 node = node.next(); 74 delNode.remove(); 75 objectRemoved = true; 76 list.decCounter(); 77 currentObject = null; 78 } 79 return answer; 80 } 81 } 82 | Popular Tags |