'='
で区切られた文字列をマップに解析するより良い方法がありますか?eclipseコレクションの文字列配列をマップに解析する方が良い
MutableMap<String, String> config = new UnifiedMap<>();
ArrayIterate.collectWith(data.split(","), String::split, "=")
.each(v -> config.put(v[0], v[1]));
'='
で区切られた文字列をマップに解析するより良い方法がありますか?eclipseコレクションの文字列配列をマップに解析する方が良い
MutableMap<String, String> config = new UnifiedMap<>();
ArrayIterate.collectWith(data.split(","), String::split, "=")
.each(v -> config.put(v[0], v[1]));
次があなたの入力と一致するかどうかはわかりませんが、2つの分割呼び出しに基づいて構造的にはおそらく似ていると思います。 toMap
を使用すると、UnifiedMap
を構築せずにeach
を使用する代わりに、コードを単純化することができます。
String data = "1=one,2=two,3=three";
MutableMap<String, String> config =
ArrayIterate.collectWith(data.split(","), String::split, "=")
.toMap(a -> a[0], a -> a[1]);
このソリューションは、より良いあなたの基準に応じて読み、コードをより簡単にするArrayAdapter
、使用しています:あなたは上記の持っているよう
このソリューションは、ArrayIterate
使用しています。
MutableMap<String, String> config = ArrayAdapter.adapt(data.split(","))
.collectWith(String::split, "=")
.toMap(a -> a[0], a -> a[1]);
あなたのカンマで区切られた配列は、大量のデータを持っている場合に有益でありうる、代わりに熱心なの怠惰な)(それが可能あなたがcollectWithへの呼び出しを行うために作るだろうArrayAdapterを使用します。
MutableMap<String, String> config = ArrayAdapter.adapt(data.split(","))
.asLazy()
.collectWith(String::split, "=")
.toMap(a -> a[0], a -> a[1]);
また、ECで利用可能Collectors2
でArrays.stream()
を使用することができますが、あなたはcollectWith
を持っているとして、あなたはmap
とメソッドのリファレンスを使用することはできません。
MutableMap<String, String> config = Arrays.stream(data.split(","))
.map(string -> string.split("="))
.collect(Collectors2.toMap(a -> a[0], a -> a[1]));
ありがとう、これは理にかなっています。 –
これはあなたの基準が良いですか? –
サンプル入力を表示できますか? –
@stephen-c - より簡単な方が良い、toMap()は以下のDonaldによって提案されているように、このトリックを行います。 –