Android - 从HashMap中获取值

87

我尝试在Android中搜索哈希映射(HashMap),但遇到了问题:

考虑以下示例:

HashMap<String, String> meMap=new HashMap<String, String>();
meMap.put("Color1","Red");
meMap.put("Color2","Blue");
meMap.put("Color3","Green");
meMap.put("Color4","White");

现在我想要迭代它并获取每种颜色的值,并想要在“Toast”中显示。如何显示?


3
http://developer.android.com/reference/java/util/HashMap.html - clamp
3
@clamp 嗯,我已经看过 Android SDK 了。 - Paresh Mayani
1
也许你应该阅读一下可用的方法,比如 keySet(),而不仅仅是描述。 - Pentium10
@Pentium10 我不知道关于HashMap的任何东西...所以从理论上讲我怎样才能知道...顺便说一句,谢谢你的帮助和支持。 - Paresh Mayani
SDK 包含有关其方法的描述,您应该在询问之前检查并查看可以在 HashMap 上运行哪种方法。 - Pentium10
9个回答

114
Iterator myVeryOwnIterator = meMap.keySet().iterator();
while(myVeryOwnIterator.hasNext()) {
    String key=(String)myVeryOwnIterator.next();
    String value=(String)meMap.get(key);
    Toast.makeText(ctx, "Key: "+key+" Value: "+value, Toast.LENGTH_LONG).show();
}

6
请注意,迭代顺序未定义。如果您想要与添加集合的相同顺序,请使用LinkedHashMap。 - Key
以上代码仅在“key”上进行迭代,而不是在“Value”上进行迭代。例如,它仅显示“color1”,“color2”等,而不是“red”,“blue”等。 - Paresh Mayani
只需向哈希映射发出键的请求,您就可以获得它了,我已经更新了我的代码。 - Pentium10
如何将 LinkedHashMap 添加到返回值中并保持相同的顺序,请帮忙。 - Jorny

93
这里有一个简单的示例来演示如何使用Map:
Map<String, String> map = new HashMap<String, String>();
map.put("Color1","Red");
map.put("Color2","Blue");
map.put("Color3","Green");
map.put("Color4","White");

System.out.println(map);
// {Color4=White, Color3=Green, Color1=Red, Color2=Blue}        

System.out.println(map.get("Color2")); // Blue

System.out.println(map.keySet());
// [Color4, Color3, Color1, Color2]

for (Map.Entry<String,String> entry : map.entrySet()) {
    System.out.printf("%s -> %s%n", entry.getKey(), entry.getValue());
}
// Color4 -> White
// Color3 -> Green
// Color1 -> Red
// Color2 -> Blue

请注意,条目将以任意顺序迭代。如果您需要特定顺序,则可以考虑使用例如LinkedHashMap

另请参阅

相关问题

关于迭代条目:

关于不同的Map特性:


关于 enum

您可能考虑使用 enumEnumMap 来代替 Map<String,String>

参见

相关问题


必须添加 import java.util.*; - Durai Amuthan.H
如果你只想要值,那么这个答案显然更易懂。 - E.Akio

8

不会产生任何警告!

    HashMap<String, String> meMap=new HashMap<String, String>();
    meMap.put("Color1","Red");
    meMap.put("Color2","Blue");
    meMap.put("Color3","Green");
    meMap.put("Color4","White");

    for (Object o : meMap.keySet()) {
        Toast.makeText(getBaseContext(), meMap.get(o.toString()),
                Toast.LENGTH_SHORT).show();
    }

7
HashMap<String, String> meMap = new HashMap<String, String>();
meMap.put("Color1", "Red");
meMap.put("Color2", "Blue");
meMap.put("Color3", "Green");
meMap.put("Color4", "White");

Iterator myVeryOwnIterator = meMap.values().iterator();
while(myVeryOwnIterator.hasNext()) {
    Toast.makeText(getBaseContext(), myVeryOwnIterator.next(), Toast.LENGTH_SHORT).show();
}

4
for (Object key : meMap.keySet()) {
        String value=(String)meMap.get(key);
        Toast.makeText(ctx, "Key: "+key+" Value: "+value, Toast.LENGTH_LONG).show();
    }

2
HashMap<String, String> meMap=new HashMap<String, String>();
meMap.put("Color1","Red");
meMap.put("Color2","Blue");
meMap.put("Color3","Green");
meMap.put("Color4","White");
Iterator iterator = meMap.keySet().iterator();
while( iterator. hasNext() ){
    Toast.makeText(getBaseContext(), meMap.get(iterator.next().toString()), 
    Toast.LENGTH_SHORT).show();
}

2
这对我有用:
HashMap<String, String> meMap=new HashMap<String, String>();
meMap.put("Color1","Red");
meMap.put("Color2","Blue");
meMap.put("Color3","Green");
meMap.put("Color4","White");

Iterator iterator = meMap.keySet().iterator();
while( iterator. hasNext() )
{
    Toast.makeText(getBaseContext(), meMap.get(iterator.next().toString()), 
    Toast.LENGTH_SHORT).show();
}

1
 Iterator iterator = meMap.keySet().iterator();
                while(iterator.hasNext() ){
                  //get key
                    String key=(String)iterator.next();
                    //toast value
                                           Toast.makeText(getBaseContext(),""+(String)meMap.get(key),Toast.LENGTH_SHORT).show();

                }

1
注意:如果您知道密钥,请使用此代码。
String value=meMap.get(key);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接