How to print all key and values from HashMap in Android?

JavaAndroidKeyHashmap

Java Problem Overview


I am very new for Android development, and I am trying to use HashMap in Android sample project. Now, am doing sample project for learn android. I just store keys and values in HashMap, i want to show the keys and their values in EditView. I followed below code in my sample project. But, first key and value only printing in EditView.

   Map<String, String> map = new HashMap<String,String>();
   map.put("iOS", "100");
   map.put("Android", "101");
   map.put("Java", "102");
   map.put(".Net", "103");
   
   Set keys = map.keySet();

   for (Iterator i = keys.iterator(); i.hasNext(); ) {
       String key = (String) i.next();
       String value = (String) map.get(key);
       textview.setText(key + " = " + value);
   }

In EditView iOS = 100 is only printing. I want to print all keys and their value in EditText. Can anyone please tell me where i am doing wrong? Thanks in advance.

Java Solutions


Solution 1 - Java

for (Map.Entry<String,String> entry : map.entrySet()) {
  String key = entry.getKey();
  String value = entry.getValue();
  // do stuff
}

Solution 2 - Java

It's because your TextView recieve new text on every iteration and previuos value thrown away. Concatenate strings by StringBuilder and set TextView value after loop. Also you can use this type of loop:

for (Map.Entry<String, String> e : map.entrySet()) {
    //to get key
    e.getKey();
    //and to get value
    e.getValue();
}

Solution 3 - Java

You can do it easier with Gson:

Log.i(TAG, "SomeText: " + new Gson().toJson(yourMap));

The result will look like:

I/YOURTAG: SomeText: {"key1":"value1","key2":"value2"}

Solution 4 - Java

First, there are errors in your code, ie. you are missing a semicolon and a closing parenthesis in the for loop.

Then, if you are trying to append values to the view, you should use textview.appendText(), instead of .setText().

There's a similar question here: https://stackoverflow.com/questions/2300169/how-to-change-text-in-android-textview

Solution 5 - Java

HashMap <Integer,Integer> hm = new HashMap<Integer,Integer>();
			
Set<Integer> keys = hm.keySet();  //get all keys
for(Integer i: keys)
{
    System.out.println(hm.get(i));
}

Solution 6 - Java

With Java 8:

map.keySet().forEach(key -> System.out.println(key + "->" + map.get(key)));

Solution 7 - Java

Java 8

map.entrySet().forEach(System.out::println);

Solution 8 - Java

	for (String entry : map.keySet()) {
	  String value = map.get(entry);
	  System.out.print(entry + "" + value + " ");
	  // do stuff
	}

Solution 9 - Java

String text="";

    for (Iterator i = keys.iterator(); i.hasNext() 
       {
           String key = (String) i.next();
           String value = (String) map.get(key);
           text+=key + " = " + value;
       }
    
        textview.setText(text);
       

Solution 10 - Java

This code is tested and working.

public void dumpMe(Map m) { dumpMe(m, ""); }
private void dumpMe(Map m, String padding) {
  Set s = m.keySet();
  java.util.Iterator ir = s.iterator();
  while (ir.hasNext()) {
    String key = (String) ir.next();
    Object value = m.get(key);
    if (value == null) continue;
    if (value instanceof Map) {
      System.out.println (padding + key + " = {");
      dumpMe((Map)value, padding + "  ");
      System.out.println(padding + "}");          
    }
    else if (value instanceof String  ||
             value instanceof Integer ||
             value instanceof Double  ||
             value instanceof Float   ||
             value instanceof Long ) {
      
      System.out.println(padding + key + " = " + value.toString());
    }
    else { 
      System.out.println(padding + key + " = UNKNOWN OBJECT: " + value.toString());
      // You could also throw an exception here
    }      
  } // while
  
} // dumpme

Charles.

Solution 11 - Java

you can use this code:

for (Object variableName: mapName.keySet()){
    variableKey += variableName + "\n";
    variableValue += mapName.get(variableName) + "\n";
}
System.out.println(variableKey + variableValue);

this code will make sure that all the keys are stored in a variable and then printed!

Solution 12 - Java

public void dumpMe(Map m) { dumpMe(m, ""); }

private void dumpMe(Map m, String padding) 
{
    Set s = m.keySet();
    java.util.Iterator ir = s.iterator();
    while (ir.hasNext()) 
    {
        String key = (String) ir.next();
        AttributeValue value = (AttributeValue)m.get(key);
        if (value == null) 
            continue;
        if (value.getM() != null)
        {
            System.out.println (padding + key + " = {");
            dumpMe((Map)value, padding + "  ");
            System.out.println(padding + "}");          
        }
        else if (value.getS() != null  ||
                 value.getN() != null ) 
        {
            System.out.println(padding + key + " = " + value.toString());
        }
        else 
        { 
            System.out.println(padding + key + " = UNKNOWN OBJECT: " + value.toString());
            // You could also throw an exception here
        }      
    } // while
}

//This code worked for me.

Solution 13 - Java

To print all keys:

myMap.keys().toList().joinToString()

To print all entries:

myMap.map { "${it.key} :: ${it.value}" }.toList().joinToString()

Solution 14 - Java

For everyone who clicked on this to find out what the content of your HashMap is, the toString method (docs) actually works with most objects. (note: a java array is not an object!)

So this woks perfectly fine for debugging purposes:

System.out.println(myMap.toString());

>>> {key1=value1, key2=value2}

Solution 15 - Java

Kotlin Answer

for ((key, value) in map.entries) {
    // do something with `key`
    // so something with `value`
}

You may find other solutions that include filterValues. Just keep in mind that retrieving a Key value using filterValues will include braces [].

val key = map.filterValues {it = position}.keys

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionGopinathView Question on Stackoverflow
Solution 1 - JavaShadowView Answer on Stackoverflow
Solution 2 - JavamuffinmadView Answer on Stackoverflow
Solution 3 - JavaAnh VuView Answer on Stackoverflow
Solution 4 - JavaSavino SgueraView Answer on Stackoverflow
Solution 5 - JavaAbhiView Answer on Stackoverflow
Solution 6 - JavamdevView Answer on Stackoverflow
Solution 7 - JavabluehalluView Answer on Stackoverflow
Solution 8 - JavaSundreshView Answer on Stackoverflow
Solution 9 - JavajeetView Answer on Stackoverflow
Solution 10 - JavaChopperCharlesView Answer on Stackoverflow
Solution 11 - Javakakaday22View Answer on Stackoverflow
Solution 12 - JavaDeepak DanielView Answer on Stackoverflow
Solution 13 - JavaAlécio CarvalhoView Answer on Stackoverflow
Solution 14 - JavapetroniView Answer on Stackoverflow
Solution 15 - JavaportfoliobuilderView Answer on Stackoverflow