Java 将字符串中的值转换为hashmap?

Java 将字符串中的值转换为hashmap?,java,string,hashmap,Java,String,Hashmap,我有一个字符串,其中有多个值。键和值用*分隔,整个值用$分隔 下面是一个例子: String agf = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt"; 现在我想把这个值放到键值对中的hashmap中 下面是我使用的代码,但没有将其转换为hashmap。请导游 String agf = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt"; String []tmp = StringUtils.split(agf,'*'); for (String v :

我有一个字符串,其中有多个值。键和值用
*
分隔,整个值用
$
分隔

下面是一个例子:

String agf = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt";
现在我想把这个值放到键值对中的hashmap中

下面是我使用的代码,但没有将其转换为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]);
} 

查看示例字符串,您应该首先在
$
(获取单个键值对)上拆分,然后在
*
(分离键值)

导入java.util.HashMap;
导入java.util.Map;
公共类解析{
公共静态void main(字符串…参数){
字符串agf=“abc*pqr$sfd*ghn$atr*mnb$tre*fgt”;
字符串[]split=agf.split(\\$);
Map Map=newhashmap();
用于(字符串温度:拆分){
字符串[]tempo=temp.split(“\\*”);
map.put(节奏[0],节奏[1]);
}
for(字符串映射键: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));
        }
    }
publicstaticvoidmain(字符串…参数){
字符串agf=“abc*pqr*gas$sfd*ghn$atr*mnb$tre*fgt”;
字符串[]split=agf.split(\\$);
Map Map=newhashmap();
用于(字符串温度:拆分){
字符串[]tempo=temp.split(“\\*”);
细木工sj=新细木工(“,”);
for(int i=1;i
希望您能找到这个有用的开关“*”和“$”

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 str=“abc*pqr$sfd*ghn$atr*mnb$tre*fgt”;
String[]entries=str.split(\\$);
Map Map=newhashmap();
对于(int i=0;i
String agf=“abc*pqr$sfd*ghn$atr*mnb$tre*fgt”;
\\下一个数组将包含这样的元素:“abc*pqr”、“sfd*ghn”、“atr*mnb”、“tre*fgt”
String[]pairs=agf.split(\\$);
Map Map=newhashmap();
for(字符串对:对){
\\在第一次迭代中,下一个数组将包含这样的元素:“abc”、“pqr”
字符串[]t=pair.split(\\*”;
\\把数据填在地图上就行了
map.put(t[0],t[1]);
}

拆分
的参数中切换
*
$
,然后它就可以工作了。您确定给定的键只有一个值吗?如果给定的键有多个值,请务必让我知道。虽然欢迎使用此代码片段,并且可能会提供一些帮助,但这将是解决问题的方法和原因。请记住r你是在为将来的读者回答这个问题,而不仅仅是现在的提问者!请你的回答添加解释,并指出适用的限制和假设。@nithesh kumar这是有效的,当我在做System.out.println(map);我有这样的输出:{sfd=ghn,abc=pqr,tre=fgt,atr=mnb}
        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]);
}