2015-09-04 73 views
0

我是新来的java,我想转换一个字符串形式的哈希表,每对由任何特殊字符分隔。我有点困惑如何在哈希表上应用循环并从中提取值。请解释我如何做到这一点。在此先感谢如何转换java中的字符串中的哈希表

public String parseHashtable(Hashtable detailHashtable){ 

    String hashstring= ""; 
    foreach(){ 
    hashstring += key + "=" + hashtable[key] + "|"; 
    } 
    return hashstring; 
} 
+0

有什么问题? – vish4071

+0

@ vish4071是的,这是我需要的。如何在for循环中应用条件 – Andrain

+3

请注意,您可能希望使用'StringBuilder'来连接字符串。 – Emd4600

回答

2
String seperator = "|"; 
StringBuilder sb = new StringBuilder(); 

Set<String> keys = detailHashtable.keySet(); 
for(String key: keys) { 
    sb.append(key+"="+detailHashtable.get(key)+ seperator); 
} 

return sb.toString(); 
+0

什么是hm里面for循环它显示错误 – Andrain

+0

我的错误,应该是'detailHashtable'而不是'hm'。我改变了它。 – McNultyyy

+0

无法正常工作。该字符串显示了非常不同的值,而不是我在散列表中的值 – Andrain

4

可以使用的Map.Entry如下:

String hashstring= ""; 
    for (Map.Entry<String, String> entry : hashTable.entrySet()) { 
     hashstring += entry.getKey() + "=" + entry.getValue() + "|"; 
    } 
+0

请使用'StringBuilder' ... – Karakuri

1
public String parseHashtable(Hashtable detailHashtable){ 

    String hashstring= ""; 
    for(Entry<String,String> entry : detailHashtable.entrySet()){ 
     hashstring += entry.getKey() + "=" + entry.getValue() + "| "; 
    } 

    return hashstring; 
} 
+4

foreach好像不是java ...;) –

1

无论是HashMapHashTable可以使用Map.Entry获得两个键和值同时进行。

String hashstring= ""; 
for (Map.Entry<String, String> entry : detailHashtable.entrySet()) { 
    hashstring += entry.getKey() + "=" + entry.getValue() + "|"; 
} 

请参阅API以了解可以使用哪些操作。 http://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html#entrySet()

+0

它是给出一个错误类型不匹配:不能从元素类型对象转换为Map.Entry Andrain

+0

我假设你的键和值是字符串。根据需要更改数据类型。什么是你的HashTable的关键和价值类型? –

0

Map从中Hashtable延伸提供了方法Map.entrySet(),返回包含在地图中的所有条目的集合。

for(Map.Entry e : detailHashTable.entrySet()){ 
    Object key = e.getKey(); 
    Object value = e.getValue(); 

    ... 
} 
0

使用entry.getKey()到字符串()entry.getValue()的toString()。;

相关问题