有没有办法"转动"ImmutableMap <String,ImmutableSet <String >>?

Bob*_*har 0 guava

我有一个ImmutableMap <String,ImmutableSet <String >>.是否有一种简单的方法可以"转动"这个孩子,还是我必须自己编码?我想弄清楚最好的观察方式......

{
  type1=[FieldA, FieldB, FieldC],
  type2=[FieldB, FieldC, FieldD],
  type3=[FieldC, FieldD, FieldE]
}
Run Code Online (Sandbox Code Playgroud)

...如...

{
  FieldA=[type1],
  FieldB=[type1, type2], 
  FieldC=[type1, type2, type3], 
  FieldD=[type1, type2],
  FieldE=[type3]
}
Run Code Online (Sandbox Code Playgroud)

MultiMap是否解决了这个问题?

Bob*_*har 5

看起来MultiMap是最佳选择.该ImmutableMultiMap#逆()方法是我一直在寻找:

ImmutableMultimap.Builder<String, String> builder = new ImmutableMultimap.Builder<String, String>();
builder.putAll( "type1", Arrays.asList( "FieldA", "FieldB", "FieldC") );
builder.putAll( "type2", Arrays.asList( "FieldB", "FieldC", "FieldD") );
builder.putAll( "type3", Arrays.asList( "FieldC", "FieldD", "FieldE") );
ImmutableMultimap<String, String> typesToFields = builder.build();
ImmutableMultimap<String, String> fieldsToTypes = typesToFields.inverse();

System.out.println( "typesToFields: " + typesToFields );
System.out.println( "fieldsToTypes: " + fieldsToTypes );
Run Code Online (Sandbox Code Playgroud)

... ...产生

typesToFields: {type1=[FieldA, FieldB, FieldC], type2=[FieldB, FieldC, FieldD], type3=[FieldC, FieldD, FieldE]}
fieldsToTypes: {FieldA=[type1], FieldB=[type1, type2], FieldC=[type1, type2, type3], FieldD=[type2, type3], FieldE=[type3]}
Run Code Online (Sandbox Code Playgroud)