From: Scott Crosby <[email protected]>
---
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
[email protected]
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev