簡體   English   中英

從哈希圖中檢索值並將其添加到字符串中

[英]Retrieving values from hashmap and adding them to a string

我基本上是在嘗試使hashmap的所有值組成一個字符串。

例如, String finalOutcome = "forename=Bob&surname=Marl" ,哈希圖將為:

Hashmap<String, String> maps = new Hashmap<String, String>();
maps.put("forename", forename);
maps.put("surname", surname);

當我嘗試在哈希圖中添加值以獲取finalOutcome時,我的應用程序/程序始終崩潰。 這是我的代碼,該怎么做,以使&符號不會出現在哈希圖中的最后一個值之后? 我將此哈希圖傳遞給另一個類中的另一個方法,如下所示:

public addMapValues(Hashmap<String, String> maps){
    for(int i=0; i<maps.size(); i++){
        finalOutcome += maps.get(i) + "&";
    }
}

只是那一點讓我非常頭疼,我敢肯定,這里有人可以立即解決此問題(是的,我對Java不太滿意)

非常感謝您的幫助

  1. 使用StringBuilder在循環中連接字符串。
  2. 考慮番石榴的地圖連接器
  3. 您的代碼無效,因為您試圖按索引而不是按鍵查找值。 地圖未編制索引。 如果要迭代這些值,則應使用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("&"));

考慮使用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()從地圖中獲取數據

另外,請注意,如果要循環(即forename ,則使用相同的key ,因此,如果要添加新人員,則他們將替換地圖中的現有人員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM