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