From: Scott Crosby <scro...@cs.rice.edu>

---
 src/uk/me/parabola/splitter/Element.java   |   57 +++++++++++++---------------
 src/uk/me/parabola/splitter/OSMWriter.java |    4 +-
 2 files changed, 28 insertions(+), 33 deletions(-)

diff --git a/src/uk/me/parabola/splitter/Element.java 
b/src/uk/me/parabola/splitter/Element.java
index 94a3265..d3f4a57 100644
--- a/src/uk/me/parabola/splitter/Element.java
+++ b/src/uk/me/parabola/splitter/Element.java
@@ -12,18 +12,15 @@
  */
 package uk.me.parabola.splitter;
 
-import java.util.HashMap;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Iterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
 
 /**
  * @author Steve Ratcliffe
  */
 public class Element {
-       private static final Iterator<Map.Entry<String, String>> EMPTY_ITERATOR 
= new EmptyIterator();
-
-       private Map<String, String> tags;
+       private ArrayList<Tag> tags; 
        private int id;
 
        protected void setId(int id) {
@@ -36,43 +33,41 @@ public class Element {
 
        public void reset() {
                this.id = 0;
-               tags = null;
+               tags.clear();
        }
 
+       class Tag {
+               public Tag(String key,String value) {
+                       this.key = key;
+                       this.value = value;
+               }
+               public String getKey() {
+                       return key;
+               }
+               public String getValue() {
+                       return value;
+               }
+               final public String key,value;
+       }
+       
        public void addTag(String key, String value) {
                if (key.equals("created_by"))
                        return;
                // Most elements are nodes. Most nodes have no tags. Create the 
tag table lazily
-               if (tags == null) {
-                       tags = new HashMap<String, String>(4);
-               }
-               tags.put(key, value);
+               if (tags == null)
+                       tags = new ArrayList<Tag>(4);
+
+               tags.add(new Tag(key, value));
        }
 
        public boolean hasTags() {
                return tags != null;
        }
 
-       public Iterator<Map.Entry<String, String>> tagsIterator() {
-               if (tags == null) {
-                       return EMPTY_ITERATOR;
-               }
-               return tags.entrySet().iterator();
-       }
-
-       private static class EmptyIterator implements 
Iterator<Map.Entry<String, String>>
-       {
-               public boolean hasNext()
-               {
-                       return false;
-               }
+       public Iterator<Tag> tagsIterator() {
+               if (tags == null)
+                       return Collections.EMPTY_LIST.iterator();
 
-               public Map.Entry<String, String> next() {
-                       throw new NoSuchElementException();
-               }
-
-               public void remove() {
-                       throw new UnsupportedOperationException();
-               }
+               return tags.iterator();
        }
 }
diff --git a/src/uk/me/parabola/splitter/OSMWriter.java 
b/src/uk/me/parabola/splitter/OSMWriter.java
index 701a639..8cd0740 100644
--- a/src/uk/me/parabola/splitter/OSMWriter.java
+++ b/src/uk/me/parabola/splitter/OSMWriter.java
@@ -145,9 +145,9 @@ public class OSMWriter {
        }
 
        private void writeTags(Element element) throws IOException {
-               Iterator<Map.Entry<String, String>> it = element.tagsIterator();
+               Iterator<Element.Tag> it = element.tagsIterator();
                while (it.hasNext()) {
-                       Map.Entry<String, String> entry = it.next();
+                       Element.Tag entry = it.next();
                        writeString("<tag k='");
                        writeAttribute(entry.getKey());
                        writeString("' v='");
-- 
1.7.2.3

_______________________________________________
mkgmap-dev mailing list
mkgmap-dev@lists.mkgmap.org.uk
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev

Reply via email to