diff --git a/core/src/processing/data/FloatDict.java b/core/src/processing/data/FloatDict.java index 9b5128118..70928b211 100644 --- a/core/src/processing/data/FloatDict.java +++ b/core/src/processing/data/FloatDict.java @@ -70,6 +70,9 @@ public class FloatDict { this.keys = keys; this.values = values; count = keys.length; + for (int i = 0; i < count; i++) { + indices.put(keys[i], i); + } } @@ -81,6 +84,7 @@ public class FloatDict { /** Remove all entries. */ public void clear() { count = 0; + indices = new HashMap(); } diff --git a/core/src/processing/data/FloatList.java b/core/src/processing/data/FloatList.java index 8a5037a85..8a34c2511 100644 --- a/core/src/processing/data/FloatList.java +++ b/core/src/processing/data/FloatList.java @@ -29,6 +29,13 @@ public class FloatList implements Iterable { } + public FloatList(Iterable iter) { + this(10); + for (float v : iter) { + append(v); + } + } + /** * Improve efficiency by removing allocated but unused entries from the diff --git a/core/src/processing/data/IntDict.java b/core/src/processing/data/IntDict.java index c5d4b28bb..44c856ea9 100644 --- a/core/src/processing/data/IntDict.java +++ b/core/src/processing/data/IntDict.java @@ -93,6 +93,9 @@ public class IntDict { this.keys = keys; this.values = values; count = keys.length; + for (int i = 0; i < count; i++) { + indices.put(keys[i], i); + } } @@ -104,6 +107,7 @@ public class IntDict { /** Remove all entries. */ public void clear() { count = 0; + indices = new HashMap(); } diff --git a/core/src/processing/data/IntList.java b/core/src/processing/data/IntList.java index bd573ee45..a833d23db 100644 --- a/core/src/processing/data/IntList.java +++ b/core/src/processing/data/IntList.java @@ -39,6 +39,14 @@ public class IntList implements Iterable { } + public IntList(Iterable iter) { + this(10); + for (int v : iter) { + append(v); + } + } + + /** * Improve efficiency by removing allocated but unused entries from the * internal array used to store the data. Set to private, though it could diff --git a/core/src/processing/data/StringDict.java b/core/src/processing/data/StringDict.java index 5f591915e..9fcf7cd8e 100644 --- a/core/src/processing/data/StringDict.java +++ b/core/src/processing/data/StringDict.java @@ -68,6 +68,9 @@ public class StringDict { this.keys = keys; this.values = values; count = keys.length; + for (int i = 0; i < count; i++) { + indices.put(keys[i], i); + } } @@ -79,6 +82,7 @@ public class StringDict { /** Remove all entries. */ public void clear() { count = 0; + indices = new HashMap(); } diff --git a/core/src/processing/data/StringList.java b/core/src/processing/data/StringList.java index f8e1b9946..1807b4528 100644 --- a/core/src/processing/data/StringList.java +++ b/core/src/processing/data/StringList.java @@ -29,6 +29,15 @@ public class StringList implements Iterable { } + // Create from something iterable, for instance: + // StringList list = new StringList(hashMap.keySet()); + public StringList(Iterable iter) { + this(10); + for (String s : iter) { + append(s); + } + } + /** * Improve efficiency by removing allocated but unused entries from the diff --git a/core/src/processing/data/Table.java b/core/src/processing/data/Table.java index b1d48d869..d6e9f9a1f 100644 --- a/core/src/processing/data/Table.java +++ b/core/src/processing/data/Table.java @@ -3391,7 +3391,7 @@ public class Table { public StringDict getStringDict(int keyColumn, int valueColumn) { return new StringDict(getStringColumn(keyColumn), - getStringColumn(valueColumn)); + getStringColumn(valueColumn)); }