我是Android开发的新手,我正在尝试在Android示例项目中使用HashMap。现在,我正在做学习android的示例项目。我只是在HashMap中存储键和值,我想在EditView中显示键及其值。我在我的示例项目中按照下面的代码。但是,第一个键和值仅在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);
}
在EditView中iOS = 100
仅打印。我想在EditText中打印所有键及其值。谁能告诉我我做错了什么?提前致谢。
答案 0 :(得分:182)
for (Map.Entry<String,String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
// do stuff
}
答案 1 :(得分:12)
这是因为您的TextView会在每次迭代时收到新文本,并且会丢弃先前的值。通过StringBuilder连接字符串并在循环后设置TextView值。 你也可以使用这种类型的循环:
for (Map.Entry<String, String> e : map.entrySet()) {
//to get key
e.getKey();
//and to get value
e.getValue();
}
答案 2 :(得分:12)
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));
}
答案 3 :(得分:11)
首先,您的代码中存在错误,即。你在for循环中缺少一个分号和一个右括号。
然后,如果您尝试将值附加到视图,则应使用textview.appendText(),而不是.setText()。
这里有一个类似的问题:how to change text in Android TextView
答案 4 :(得分:5)
使用Java 8:
for (index, week) in monthInfo.enumerated() {
for (index, day) in week.enumerated() {
if day == dateComponents.day /* Today's Date (the day I'm looking for) */ {
selectedDay = IndexPath(row: index, section: ???)
}
}
}
答案 5 :(得分:5)
Java 8
map.entrySet().forEach(System.out::println);
答案 6 :(得分:2)
此代码经过测试并正常运行。
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
查尔斯。
答案 7 :(得分:2)
for (String entry : map.keySet()) {
String value = map.get(entry);
System.out.print(entry + "" + value + " ");
// do stuff
}
答案 8 :(得分:1)
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);
答案 9 :(得分:1)
您可以使用此代码:
for (Object variableName: mapName.keySet()){
variableKey += variableName + "\n";
variableValue += mapName.get(variableName) + "\n";
}
System.out.println(variableKey + variableValue);
此代码将确保所有密钥都存储在变量中然后打印!
答案 10 :(得分:1)
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.
答案 11 :(得分:0)
对于点击此内容以查找HashMap内容的所有人,toString
方法(docs)实际上适用于大多数对象。 (注意:java数组不是对象!)
所以这对于调试来说非常好:
System.out.println(myMap.toString());
>>> {key1=value1, key2=value2}
答案 12 :(得分:0)
打印所有密钥:
myMap.keys().toList().joinToString()
打印所有条目:
myMap.map { "${it.key} :: ${it.value}" }.toList().joinToString()
答案 13 :(得分:-1)
科特琳答案
for ((key, value) in map.entries) {
// do something with `key`
// so something with `value`
}
您可能会找到其他包含filterValues的解决方案。请记住,使用filterValues检索键值将包含花括号[]。
val key = map.filterValues {it = position}.keys