Mercurial Hosting > luan
diff core/src/luan/AbstractLuanTable.java @ 284:8870840251ea
use LinkedHashMap in LuanTable to preserve order
git-svn-id: https://luan-java.googlecode.com/svn/trunk@285 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Tue, 02 Dec 2014 03:55:33 +0000 |
parents | 8afe9f2fdfec |
children | 9fb523472035 |
line wrap: on
line diff
--- a/core/src/luan/AbstractLuanTable.java Tue Dec 02 03:34:04 2014 +0000 +++ b/core/src/luan/AbstractLuanTable.java Tue Dec 02 03:55:33 2014 +0000 @@ -3,7 +3,7 @@ import java.util.Iterator; import java.util.ListIterator; import java.util.Map; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.ArrayList; import java.util.Collections; @@ -16,6 +16,14 @@ public abstract class AbstractLuanTable implements LuanTable { + protected final Map<Object,Object> newMap() { + return new LinkedHashMap<Object,Object>(); + } + + protected final Map<Object,Object> newMap(Map<Object,Object> map) { + return new LinkedHashMap<Object,Object>(map); + } + @Override public boolean isEmpty() { return isList() && length()==0; } @@ -29,7 +37,7 @@ } @Override public Map<Object,Object> asMap() { - Map<Object,Object> map = new HashMap<Object,Object>(); + Map<Object,Object> map = newMap(); for( Map.Entry<Object,Object> entry : this ) { map.put(entry.getKey(),entry.getValue()); } @@ -78,6 +86,6 @@ } @Override public LuanTable cloneTable() { - return isList() ? new LuanTableImpl(new ArrayList<Object>(asList())) : new LuanTableImpl(new HashMap<Object,Object>(asMap())); + return isList() ? new LuanTableImpl(new ArrayList<Object>(asList())) : new LuanTableImpl(newMap(asMap())); } }