2017-03-14 11 views
0
Map<String, List<String>> hash = new HashMap<String, List<String>>(); 
    for (String s: dict){ 
     hash.compute(s.substring(2)), 
      (k, v)-> { if (v == null){ 
       return new ArrayList<>(Arrays.asList(s)); 
      } 
      else{ 
       v.add(s); 
      } 
      return v; 
     }); 
    } 

コンピューティング部分をクリーナーにする方法はありますか? addメソッドはListを返さないので、コードが非常に長くなります。このコードを短くすることができます

+1

を私たちは、これがどのような言語の推測を取らなければなりませんか...?また:http://codereview.stackexchange.com – deceze

答えて

0

お試しいただけますか?

Map<String, List<String>> collect = Stream.of(dist).collect(Collectors.groupingBy(o -> o.substring(2))); 
+0

この方法は本当に非常にきれいできれいです。ありがとう – Michael

+0

あなたは大歓迎です。 –

+0

@Michaelそれはあなたの問題を解決していますか? –

0

ローマの答えは、おそらくストリームがここにあることを、今、最も慣用Java言語である配列 distのdistのコレクション

Map<String, List<String>> hash = dict.stream().collect(Collectors.groupingBy(o -> o.substring(2))); 

かの場合、または。

あなたが現在あなたが使用できる持っているものと同様の構造維持したい場合は、次の

Map<String, List<String>> hash = new HashMap<>(); 
    for (String s: dict) { 
     hash.computeIfAbsent(s.substring(2), k -> new ArrayList<>()).add(s); 
    } 
+0

ありがとう、答えは本当に役立ちます – Michael

関連する問題