简体   繁体   中英

Return HashMap added to List<Object>

I have a problem in JAVA when i'm trying to return a HashMap that I have added to a list of type: List<Object> . I know I can use other type of lists, but I need to use List<Object>

List<Object> listOfObjects = new ArrayList<Object>();

    HashMap<String, String> hashmap = new HashMap<String,String>();
    hashmap.put("x", "foo");
    hashmap.put("y", "bar");

    listOfObjects.add(hashmap);

    for (int i = 0; i < listOfObjects.size(); i++) {
        System.out.println(listOfObjects.get(i));
    }

I have added my hashmap to my listOfObject, but how do I get the HashMap from the listOfObject such that I can use the HashMap-commands. fx: hashmap.get("x) and it will return "foo".

Normally i thought i could just write: listOfObjects.get(0).get("x") and it would return "foo" but that does not work.

If anyone know another work around that's find but I just need to use a List.

Normally i thought i could just write: listOfObjects.get(0).get("x") and it would return "foo" but that does not work.

No, it wouldn't - because the type of listOfObjects.get(0) is just Object . How do you expect the compiler to know that it's meant to be a map?

You can use:

HashMap<String, String> map = (HashMap<String, String>) listOfObjects.get(0);
// Use map...

... but be aware that due to the nature of generics in Java, that cast isn't really ensuring that all the key/value pairs in the map are "string to string". The cast would work even if you'd originally used:

Map<Integer, Integer> badMap = new HashMap<Integer, Integer>();
badMap.put(0, 10);
listOfObjects.add(badMap);

You'll get a warning for this, but it's important to understand what it means. It's not clear what your use case is, but if you can make it more strongly typed (perhaps create a new class which contains a Map<String, String> ?) that would be good. Is every element of your list going to be a map? If so, why are you using List<Object> rather than a more strongly-typed list? If some elements aren't going to be maps, how can you tell which ones will be? (These are the sort of things you should be thinking about carefully.)

I hope this will help u..

List<Object> listOfObjects = new ArrayList<Object>();

        HashMap<String, String> hashmap = new HashMap<String,String>();
        hashmap.put("x", "foo");
        hashmap.put("y", "bar");

        listOfObjects.add(hashmap);

        for (int i = 0; i < listOfObjects.size(); i++) {
            System.out.println(((HashMap<String, String>)listOfObjects.get(i)).get("x"));
        }

Normally as your list is of type of object . so first cast it to HashMap type and then get the value from map

please notice the following code

 System.out.println(((HashMap<String, String>)listOfObjects.get(i)).get("x"));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM