Prakash
Prakash

Reputation: 7996

Adding to hashmap and arraylist

I am trying to add hashmaps to array list. But the map(completeEntrie) is overriding the previous values when I am trying to add more than one value to arraylist(listOfCompleteEntries)

public class MapExample {

    public static void main(String a[]) {
        ArrayList listOfCompleteEntries = new ArrayList();
        Map<String, String> completeEntrie = new HashMap<String, String>();

        for (int i = 0; i < 3; i++) {

            completeEntrie.put("KEY_NAME", "Number:" + i);
            System.out.print(completeEntrie.toString());
            listOfCompleteEntries.add(completeEntrie);
            System.out.println(listOfCompleteEntries.toString());
        }
        System.out.println(listOfCompleteEntries.toString());
    }
}

Output for the above code is

{KEY_NAME=Number:0}[{KEY_NAME=Number:0}]
{KEY_NAME=Number:1}[{KEY_NAME=Number:1}, {KEY_NAME=Number:1}]
{KEY_NAME=Number:2}[{KEY_NAME=Number:2}, {KEY_NAME=Number:2}, {KEY_NAME=Number:2}]
[{KEY_NAME=Number:2}, {KEY_NAME=Number:2}, {KEY_NAME=Number:2}]

But i want the output to be like this

{KEY_NAME=Number:0}[{KEY_NAME=Number:0}]
{KEY_NAME=Number:1}[{KEY_NAME=Number:0}, {KEY_NAME=Number:1}]
{KEY_NAME=Number:2}[{KEY_NAME=Number:0}, {KEY_NAME=Number:1}, {KEY_NAME=Number:2}]
[{KEY_NAME=Number:0}, {KEY_NAME=Number:1}, {KEY_NAME=Number:2}]

Also please explain why is this map overriding the previous map in arraylist. Thanks for your help.

Upvotes: 1

Views: 132

Answers (1)

user1898811
user1898811

Reputation:

Despite the irrelevant title, you need to construct a new map instance for each unique entry you want to add to the array list. Without this, you are modifying the same map instance.

Upvotes: 2

Related Questions