How to add element at specific index/position in LinkedHashMap?
I have an ordered LinkedHashMap and i want to add element at specific index , say at first place or last place in the map. How can i add element in LinkedHashMap at an specific position?
Even if I could add an element to FIRST or LAST position in LinkedHashMap would help!
Solution 1:
You could do this element adding to 1. or last place:
Adding to last place ► You just need to remove the previous entry from the map like this:
map.remove(key);
map.put(key,value);
Adding to first place ► It's a bit more complicated, you need to clone the map, clear it, put the 1. value to it, and put the new map to it, like this:
I'm using maps with String keys and Group (my custom class) values:
LinkedHashMap<String, Group> newMap=(LinkedHashMap<String, Group>) map.clone();
map.clear();
map.put(key, value);
map.putAll(newMap);
As you see, with these methods you can add unlimited amount of things to the begin and to the end of the map.
Solution 2:
You can not change the order. It is insert-order
(by default) or access-order
with this constructor:
public LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder)
Constructs an empty LinkedHashMap instance with the specified initial capacity, load factor and ordering mode.
Parameters: initialCapacity - the initial capacity loadFactor - the load factor accessOrder - the ordering mode - true for access-order, false for insertion-order
Throws: IllegalArgumentException - if the initial capacity is negative or the load factor is nonpositive
See: LinkedHashMap