@@ -16,10 +16,11 @@ public class VariableMap {
1616 */
1717 private static final Comparator <String > NUMERIC_INDEX_COMPARATOR = Comparator .comparingInt (Integer ::parseInt );
1818
19- private final Map <String , Object > map = new HashMap <>(); // Ordering is not important right now
19+ private final Map <String , Object > hashMap = new HashMap <>(); // Ordering is not important right now
20+ private final Map <String , Object > treeMap = new TreeMap <>();
2021
2122 public Map <String , Object > getMap () {
22- return this .map ;
23+ return this .hashMap ;
2324 }
2425
2526 private static String [] splitList (String name ) {
@@ -37,22 +38,15 @@ private static String[] splitList(String name) {
3738 @ SuppressWarnings ("unchecked" )
3839 public Optional <Object > getVariable (String name ) {
3940 if (!name .endsWith ("*" )) {
40- return Optional .ofNullable (map .get (name ));
41+ return Optional .ofNullable (hashMap .get (name ));
4142 } else {
4243 var split = splitList (name );
43- var current = map ;
44+ var current = treeMap ;
4445 for (var i = 0 ; i < split .length ; i ++) {
4546 var n = split [i ];
4647 if (n .equals ("*" )) {
4748 assert i == split .length - 1 ;
48-
49- // We sort the indexes as best as we can
50- boolean numerical = current .keySet ().stream ()
51- .allMatch (val -> val .matches ("[1-9][0-9]*" ));
52- var treeMap = new TreeMap <>(numerical ? NUMERIC_INDEX_COMPARATOR : Comparator .<String >naturalOrder ());
53- treeMap .putAll (current );
54-
55- return Optional .of (treeMap );
49+ return Optional .of (current );
5650 }
5751 var o = current .get (n );
5852 if (o == null ) {
@@ -79,13 +73,13 @@ public Optional<Object> getVariable(String name) {
7973 public void setVariable (String name , @ Nullable Object value ) {
8074 if (!name .endsWith ("*" )) {
8175 if (value == null ) {
82- map .remove (name );
76+ hashMap .remove (name );
8377 } else {
84- map .put (name , value );
78+ hashMap .put (name , value );
8579 }
8680 }
8781 var split = splitList (name );
88- var parent = map ;
82+ var parent = treeMap ;
8983 for (var i = 0 ; i < split .length ; i ++) {
9084 var n = split [i ];
9185 var current = parent .get (n );
@@ -147,7 +141,7 @@ public void setVariable(String name, @Nullable Object value) {
147141 * Clears all variables
148142 */
149143 public void clearVariables () {
150- map .clear ();
144+ hashMap .clear ();
151145 }
152146
153147 @ SuppressWarnings ("unchecked" )
@@ -156,7 +150,7 @@ private void deleteFromHashMap(String parent, Map<String, Object> current) {
156150 if (e .getKey () == null ) {
157151 continue ;
158152 }
159- map .remove (parent + Variables .LIST_SEPARATOR + e .getKey ());
153+ hashMap .remove (parent + Variables .LIST_SEPARATOR + e .getKey ());
160154 var val = e .getValue ();
161155 if (val instanceof Map ) {
162156 deleteFromHashMap (parent + Variables .LIST_SEPARATOR + e .getKey (), (Map <String , Object >) val );
0 commit comments