私はいくつかのケースで不変のマップエレガントな方法Java 8のMapに値以外を追加するには?
public Map<String,String> getMap(){
return ImmutableMap.<String,String>builder()
.put("FOO",getFooType())
.put("BAR", getBarType())
.build();
}
を使用しています、getFooType()
またはgetBarType()
はnullを返します。そのため、例外はcom.google.common.collect.ImmutableMap
からスローされます。私は、nullでない空文字列だけでマップを設定する上品な方法があるのだろうかと思います。
グーバのライブラリに限定されているわけではありません。
私はマップに追加する多くのキー、チェックがあれば、コードがきれいではありません作るのこの種を持っているので、私は、次の
Map<String,String> map = new HashMap<>();
String fooType = getFooType();
String barType = getBarType();
if (fooType!=null && fooType.length()>0){
map.put("FOO", fooType);
}
if (barType!=null && barType.length()>0){
map.put("BAR", barType);
}
と離れて行うことができます。私はそれを行うためのエレガントな方法があるのだろうかと思っています。
私は自分のプロジェクトにJava 8を使用しています。これは与える -
public Map<String,Optional<String>> getMap(){
return ImmutableMap.<String,Optional<String>>builder()
.put("FOO",Optional.<String>ofNullable(getFooType()))
.put("BAR", Optional.<String>ofNullable(getBarType()))
.build();
}
マップは任意のオブジェクトは、あなたの文字列をラップし、あなたがマップから値を取得するときに、map.get(key).orElse(DEF_VALUE);
を使用し保存します。この方法:あなたがマップの値としてOptional
を使用することができます
そして、これらの '' getFooType'とgetBarType'は静的メソッドですか? –
地図に入るアイテムの出所は? – bradimus
これらは静的メソッドではありません。マップするアイテムはメソッド呼び出しから来ています。メソッドはマップを返す必要があります –