我基本上试图创建一个由hashmap
中的所有值组成的字符串。
例如String finalOutcome = "forename=Bob&surname=Marl"
,hashmap将是:
Hashmap<String, String> maps = new Hashmap<String, String>();
maps.put("forename", forename);
maps.put("surname", surname);
当我尝试在hashmap中添加值以获取finalOutcome
时,我的应用/程序会一直崩溃。这是我的代码,我该怎么做才能在hashmap的最后一个值之后找到&
符号?我将此hashmap传递给另一个类中的另一个方法,如下所示:
public addMapValues(Hashmap<String, String> maps){
for(int i=0; i<maps.size(); i++){
finalOutcome += maps.get(i) + "&";
}
}
正是这一点让我头疼不已,我相信这里的人几乎可以立即解决这个问题(是的,我对Java不好)
非常感谢一些帮助
答案 0 :(得分:1)
StringBuilder
在循环中连接字符串。Map.entrySet()
。番石榴的例子:
HashMap<String, String> map = new HashMap<String, String>();
String result = Joiner.on('&').withKeyValueSeparator("=").join(map);
循环示例:
HashMap<String, String> map = new HashMap<String, String>();
StringBuilder sb = new StringBuilder();
for (Entry<String, String> entry : map.entrySet()) {
sb.append('&').append(entry.getKey()).append('=').append(entry.getValue());
}
String result = sb.length() > 0 ? sb.substring(1) : "";
Java 8流的示例(基于从某种原因删除的另一个答案):
HashMap<String, String> map = new HashMap<String, String>();
String result = map.entrySet().stream()
.map(e -> e.getKey() + "=" + e.getValue())
.collect(Collectors.joining("&"));
答案 1 :(得分:0)
考虑使用StringBuilder
对象
StringBuilder finalOutcome = new StringBuilder ();
for (String name: maps.values()) {
finalOutcome.append (name).append("&");
}
return finalOutcome.toString ();
考虑使用https://docs.oracle.com/javase/7/docs/api/java/util/Map.html#values() 从地图中获取数据
此外,请注意,如果您正在循环key
,则使用相同的forename
,因此,如果您要添加新人,则他们将替换地图中的现有人。