1 49 50 package org.ozoneDB.collections; 51 52 import java.util.Iterator ; 53 54 59 public class _BaseTreeMap_SubMap_keySet extends AbstractOzoneSet implements OzoneSet { 60 61 private static final long serialVersionUID = 1L; 62 63 private _BaseTreeMap_SubMap owner; 64 65 66 public _BaseTreeMap_SubMap_keySet(_BaseTreeMap_SubMap owner) { 67 this.owner = owner; 68 } 69 70 71 public int size() { 72 return owner.size(); 73 } 74 75 public Iterator iterator() { 76 if (owner.getOwner()._org_ozoneDB_alwaysUseInternalIterator()) { 77 return _org_ozoneDB_internalIterator(); 78 } else { 79 BaseTreeMap.Node first = owner.getOwner()._org_ozoneDB_lowestGreaterThan(owner.getMinKey(), true); 80 BaseTreeMap.Node max = owner.getOwner()._org_ozoneDB_lowestGreaterThan(owner.getMaxKey(), false); 81 82 return (Iterator ) database().createObject(_BaseTreeMap_OzoneTreeIteratorImpl.class, 85 new Class [] {BaseTreeMap.class, Integer.TYPE, BaseTreeMap.Node.class, BaseTreeMap.Node.class}, 86 new Object [] {owner.getOwner(), new Integer (BaseTreeMapImpl.KEYS), first, max}); 87 } 88 } 89 90 public Iterator _org_ozoneDB_internalIterator() { 91 BaseTreeMap.Node first = owner.getOwner()._org_ozoneDB_lowestGreaterThan(owner.getMinKey(), true); 92 BaseTreeMap.Node max = owner.getOwner()._org_ozoneDB_lowestGreaterThan(owner.getMaxKey(), false); 93 return new _BaseTreeMap_TreeIterator(owner.getOwner(), BaseTreeMapImpl.KEYS, first, max); 94 } 95 96 public void clear() { 97 owner.clear(); 98 } 99 100 public boolean contains(Object o) { 101 if (!owner.keyInRange(o)) 102 return false; 103 return !owner.getOwner()._org_ozoneDB_getNode(o).isNil(); 104 } 105 106 public boolean remove(Object o) { 107 if (!owner.keyInRange(o)) 108 return false; 109 BaseTreeMap.Node n = owner.getOwner()._org_ozoneDB_getNode(o); 110 if (!n.isNil()) { 111 owner.getOwner()._org_ozoneDB_removeNode(n); 112 return true; 113 } 114 return false; 115 } 116 117 } | Popular Tags |