Skip to content

Commit 2ff7ea0

Browse files
committed
ValueFactory.MapBuilder is preferred to dpreserve value order
ImmutableMapValueImpl preserves order of values. This is preferred behavior because it's preffered if created map objects preserve order of values when an application forwards a received (or deserialized) objects into another application without modifying it. This pull-request applies this preference to MapBuilder. Performance impact should be small because MapBuilder API is a minor API.
1 parent d2a2247 commit 2ff7ea0

File tree

1 file changed

+3
-5
lines changed

1 file changed

+3
-5
lines changed

msgpack-core/src/main/java/org/msgpack/value/ValueFactory.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import java.math.BigInteger;
3030
import java.util.AbstractMap;
3131
import java.util.Arrays;
32-
import java.util.HashMap;
32+
import java.util.LinkedHashMap;
3333
import java.util.Iterator;
3434
import java.util.List;
3535
import java.util.Map;
@@ -191,10 +191,8 @@ public static ImmutableArrayValue emptyArray()
191191
ImmutableMapValue newMap(Map<K, V> map)
192192
{
193193
Value[] kvs = new Value[map.size() * 2];
194-
Iterator<Map.Entry<K, V>> ite = map.entrySet().iterator();
195194
int index = 0;
196-
while (ite.hasNext()) {
197-
Map.Entry<K, V> pair = ite.next();
195+
for (Map.Entry<K, V> pair : map.entrySet()) {
198196
kvs[index] = pair.getKey();
199197
index++;
200198
kvs[index] = pair.getValue();
@@ -252,7 +250,7 @@ public static Map.Entry<Value, Value> newMapEntry(Value key, Value value)
252250

253251
public static class MapBuilder
254252
{
255-
private final Map<Value, Value> map = new HashMap<Value, Value>();
253+
private final Map<Value, Value> map = new LinkedHashMap<Value, Value>();
256254

257255
public MapBuilder() {}
258256

0 commit comments

Comments
 (0)