[英]Convert value in string into hashmap?
我有一個字符串,其中有多個值。 鍵和值之間用*
分隔,整個值之間用$
分隔。
下面是示例:
String agf = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt";
現在,我想將此值放入鍵值對的hashmap中。
下面是我正在使用但無法將其轉換為哈希圖的代碼。 請指導。
String agf = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt";
String []tmp = StringUtils.split(agf,'*');
for (String v : tmp) {
String[] t = StringUtils.split(v,'$');
map.put(t[0], t[1]);
}
查看示例字符串,您應該首先在$
上分割(以獲取單個鍵值對),然后在*
上分割(以分離鍵和值)
import java.util.HashMap;
import java.util.Map;
public class Parse{
public static void main(String ...args){
String agf = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt";
String [] split = agf.split("\\$");
Map<String,String> map = new HashMap<String,String>();
for(String temp : split){
String [] tempo = temp.split("\\*");
map.put(tempo[0],tempo[1]);
}
for(String mapkeys : map.keySet()){
System.out.println(mapkeys+" ::: "+map.get(mapkeys));
}
}
}
如果給定鍵有多個值,請使用以下命令:
public static void main(String ...args){
String agf = "abc*pqr*gas$sfd*ghn$atr*mnb$tre*fgt";
String [] split = agf.split("\\$");
Map<String,String> map = new HashMap<String,String>();
for(String temp : split){
String [] tempo = temp.split("\\*");
StringJoiner sj = new StringJoiner(",");
for(int i = 1; i < tempo.length;i++){
sj.add(tempo[i]);
}
String value = sj.toString();
map.put(tempo[0],value);
}
for(String mapkeys : map.keySet()){
System.out.println(mapkeys+" ::: "+map.get(mapkeys));
}
}
希望對您有所幫助
切換“ *”和“ $”。
String agf = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt";
String []tmp = StringUtils.split(agf,'$');
for (String v : tmp) {
String[] t = StringUtils.split(v,'*');
map.put(t[0], t[1]);
}
使用string.split("//$")
和string.split("//*")
作為用例的正則表達式。
完整代碼:
String str = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt";
String[] entries = str.split("\\$");
Map<String, String> map = new HashMap<String, String>();
for (int i=0; i<entries.length; i++) {
String[] entry = entries[i].split("\\*");
map.put(entry[0], entry[1]);
}
System.out.println("Entries are -> " + map.entrySet());
String agf = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt";
\\next array will contain such elements: "abc*pqr", "sfd*ghn", "atr*mnb", "tre*fgt"
String[] pairs = agf.split("\\$");
Map<String, String> map = new HashMap();
for (String pair: pairs) {
\\in first iteration next array will contain such elements: "abc", "pqr"
String[] t = pair.split("\\*");
\\just fill out map with data
map.put(t[0], t[1]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.