2016-04-26 13 views
0

2つのカンマ区切り文字列があります。値をインデックスでバインドしてこれらの値をマップに配置したいと思います。 1つの方法は、次の例を使用することです。2つのカンマ区切り文字列をマップに変換します

package com.test; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

public class StringToMap { 

    public static void main(String[] args) { 
     String s1 = "1, 2, 3"; 
     String s2 = "a, b, c"; 
     Map<String, String> m = new HashMap<String, String>(); 

     List<String> s1List = new ArrayList<String>(Arrays.asList(s1.split(","))); 
     List<String> s2List = new ArrayList<String>(Arrays.asList(s2.split(","))); 

     for (int i = 0; i < s1List.size(); i++) { 
      m.put(s1List.get(i).trim(), s2List.get(i).trim()); 
     } 

     System.out.println(m); 
    } 
} 

結果は{3 = c、2 = b、1 = a}です。これを行うための他の効率的な方法がありますか?

+0

Java 8を使用していますか? – shmosel

+2

リストを必要とせず、 'split()'によって生成された配列を処理するだけです。 – Thomas

+0

私はあなたがここでより多くの情報を持っていると思う:http://stackoverflow.com/questions/12418334/converting-string-arrays-into-map – Akah

答えて

1

あなたはこれについてどう思いますか?

public static void main(String[] args) { 
    String s1 = "1, 2, 3"; 
    String s2 = "a, b, c"; 
    Map<String, String> m = new HashMap<String, String>(); 
    String s1List [] = s1.split(","); 
    String s2List [] = s2.split(","); 
    for (int i = 0; i < s1List.length && i < s2List.length; i++) { 
     m.put(s1List[i].trim(), s2List[i].trim()); 
    } 
    System.out.println(m); 
} 
+0

私はループ外に分割したい。 – Thomas

+0

あまり効率的ではありません。 – shmosel

+0

@Thomas私はあなたの提案に従って私の答えを更新しました。私のコードを改善してくれてありがとう。 – Abhishek

関連する問題