Android hashMapValues如何获取值并格式化它

时间:2015-01-23 04:29:51

标签: java android string android-fragments hashmap

如何打印我的HashMap的值,如下所示:

String hashMapValues = PHOTO_IDS.get(所有值);

hashMapValues输出为: id1,id2,id3,id4,id5

HashMap<String,String> PHOTO_IDS;

onCreate....
PHOTO_IDS = new HashMap<String, String>();

if(vc.readLAST_TAKEN_PIC().equals("imageCam1")) { PHOTO_IDS.put("imageCam1", id); }
                   else if(vc.readLAST_TAKEN_PIC().equals("imageCam2")) { PHOTO_IDS.put("imageCam2", id); }
                   else if(vc.readLAST_TAKEN_PIC().equals("imageCam3")) { PHOTO_IDS.put("imageCam3", id); }
                   else if(vc.readLAST_TAKEN_PIC().equals("imageCam4")) { PHOTO_IDS.put("imageCam4", id); }
                   else if(vc.readLAST_TAKEN_PIC().equals("imageCam5")) { PHOTO_IDS.put("imageCam5", id); }
很多人都感谢你的帮助。

已更新_____________________________________________

谢谢大家的回复。这是工作代码:

String hashmapValues = PHOTO_IDS.values().toString();
TMP_PHOTO_ID = hashmapValues.replaceAll("[\\[\\]]", "");

3 个答案:

答案 0 :(得分:2)

您可以将Map.getValues()用于此目的。

喜欢

System.out.println(PHOTO_IDS .values());

输出就像

[id1, id2, id3, id4, id5]

在这里,您需要从字符串中重新发送[]个字符。

答案 1 :(得分:1)

您可以使用entrySet()打印所有值,如下所示:

更新:使用StringBuilder

StringBuilder s = new StringBuilder();
for(Entry<String,String> e : PHOTO_IDS.entrySet()){
   s.append(e.getValue() + ", ");
}
String result = s.toString();

有关详细信息,请参阅HashMap#entrySet() java documentation

还有一种方法可以直接获取逗号分隔值,如下所示:

String result = PHOTO_IDS.values().toString();

但是这会将输出返回为[id1, id2, id3, id4, id5],因此您只需要删除那些使用[]

可以轻松完成的括号substring

答案 2 :(得分:0)

如果您不想在值列表中使用括号,则可以执行以下操作。但是对于所有解决方案,如果您担心订单,可能需要考虑使用LinkedHashMap

StringBuilder sb = new StringBuilder();
for(String val : map.values()){
    sb.append(val+",");
}
String result = sb.toString();
System.out.println(result.substring(0, result.length() - 1)); //This will remove the last comma.