Retrieve all values from HashMap keys in an ArrayList Java

前端 未结 9 1376
野性不改
野性不改 2021-01-31 14:21

Good day, this is kind of confusing me now(brain freeze!) and seem to be missing something. Have an ArrayList which i populate with a HashMap. now i put in my HashMap and arrayl

相关标签:
9条回答
  • 2021-01-31 14:51

    Suppose I have Hashmap with key datatype as KeyDataType and value datatype as ValueDataType

    HashMap<KeyDataType,ValueDataType> list;
    

    Add all items you needed to it. Now you can retrive all hashmap keys to a list by.

    KeyDataType[] mKeys;
    mKeys=list.keySet().toArray(new KeyDataType[list.size()]);
    

    So, now you got your all keys in an array mkeys[]

    you can now retrieve any value by calling

     list.get(mkeys[position]);
    
    0 讨论(0)
  • 2021-01-31 14:54

    Put i++ somewhere at the end of your loop.

    In the above code, the 0 position of the array is overwritten because i is not incremented in each loop.

    FYI: the below is doing a redundant search:

    if(keys[i].equals(DATE)){                 
       date_value[i] = map.get(keys[i]);              
    } else if(keys[i].equals(VALUE)){              
       value_values[i] = map.get(keys[i]);             
    } 
    

    replace with

    if(keys[i].equals(DATE)){                 
       date_value[i] = mapping.getValue();
    } else if(keys[i].equals(VALUE)){              
       value_values[i] = mapping.getValue()
    } 
    

    Another issue is that you are using i for date_value and value_values. This is not valid unless you intend to have null values in your array.

    0 讨论(0)
  • 2021-01-31 14:56

    This is incredibly old, but I stumbled across it trying to find an answer to a different question.

    my question is how do you get the values from both map keys in the arraylist?

    for (String key : map.keyset()) {
      list.add(key + "|" + map.get(key));
    }
    

    the Map size always return a value of 2, which is just the elements

    I think you may be confused by the functionality of HashMap. HashMap only allows 1 to 1 relationships in the map.

    For example if you have:

    String TAG_FOO = "FOO";
    String TAG_BAR = "BAR";
    

    and attempt to do something like this:

    ArrayList<String> bars = ArrayList<>("bar","Bar","bAr","baR");
    HashMap<String,String> map = new HashMap<>();
    for (String bar : bars) {
      map.put(TAG_BAR, bar);
    }
    

    This code will end up setting the key entry "BAR" to be associated with the final item in the list bars.

    In your example you seem to be confused that there are only two items, yet you only have two keys recorded which leads me to believe that you've simply overwritten the each key's field multiple times.

    0 讨论(0)
  • 2021-01-31 14:57

    Create an ArrayList of String type to hold the values of the map. In its constructor call the method values() of the Map class.

    Map <String, Object> map;
    List<Object> list = new ArrayList<Object>(map.values());
    
    0 讨论(0)
  • 2021-01-31 14:59

    List constructor accepts any data structure that implements Collection interface to be used to build a list.

    To get all the keys from a hash map to a list:

    Map<String, Integer> map = new HashMap<String, Integer>();
    List<String> keys = new ArrayList<>(map.keySet());
    

    To get all the values from a hash map to a list:

    Map<String, Integer> map = new HashMap<String, Integer>();
    List<Integer> values = new ArrayList<>(map.values());
    
    0 讨论(0)
  • 2021-01-31 15:02

    Try it this way...

    I am considering the HashMap with key and value of type String, HashMap<String,String>

    HashMap<String,String> hmap = new HashMap<String,String>();
    
    hmap.put("key1","Val1");
    hmap.put("key2","Val2");
    
    ArrayList<String> arList = new ArrayList<String>();
    
    for(Map.Entry<String,String> map : hmap.entrySet()){
    
         arList.add(map.getValue());
    
    }
    
    0 讨论(0)
提交回复
热议问题