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

时间:2017-02-15 13:50:49

标签: 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 : tmp) {
    String[] t = StringUtils.split(v,'$');
    map.put(t[0], t[1]);
} 

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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));
        }
    }

希望您找到这个有用的

答案 2 :(得分:0)

Switch&#39; *&#39;和&#39; $&#39;。

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]);
} 

答案 3 :(得分:0)

使用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());

答案 4 :(得分:0)

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]);
}