2017-02-15 16 views
1

私は複数の値を持つ文字列を持っています。キーと値は*で区切られ、全体の値は$で区切られています。以下は文字列の値をハッシュマップに変換しますか?

は一例です:

String agf = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt"; 

そして今、私は、キーと値のペアでハッシュマップには、この値を載せていきたいと思います。

以下は私が使用していたコードですが、ハッシュマップに変換するための作業はありません。ご案内ください。あなたが複数いた場合、あなたの例の文字列を見ると

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

スイッチ '*'と引数で、 '$' 'split'に、仕事になるだろう。 – dasblinkenlight

+0

あなたは特定のキーに対して1つの値しか持たないと確信していますか? – SmashCode

答えて

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

は、あなたがこの便利

を見つけホープ10
+0

指定したキーに複数の値がある場合は、私に知らせてください。 – SmashCode

1

0

'*'と '$'を切り替えます。

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

このコードスニペットは歓迎されていますが、いくつかの助けを与えるかもしれませんが、* how *と* Why *がこれを解決するのは説明があれば大幅に改善されます(// meta.stackexchange.com/q/114762)問題。あなたが今質問している人だけでなく、将来読者のための質問に答えていることを忘れないでください!説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。 –

+1

@ nithesh-kumarこれは、私がSystem.out.println(map)をやっているときに動作しています。私はそのような出力を持っている:{sfd = ghn、abc = pqr、tre = fgt、atr = mnb} –

+0

ありがとう@PavloPlynko私はあなたの答えをupvoted :) –

関連する問題