2013-12-13 41 views
0

我有一個ImmutableMap <字符串,ImmutableSet <字符串> >。有沒有簡單的方法來「擺動」這個孩子,還是我必須自己編碼?我試圖找出觀看的最佳途徑......有沒有辦法「旋轉」ImmutableMap <String,ImmutableSet <String>>?

{ 
    type1=[FieldA, FieldB, FieldC], 
    type2=[FieldB, FieldC, FieldD], 
    type3=[FieldC, FieldD, FieldE] 
} 

...爲...

{ 
    FieldA=[type1], 
    FieldB=[type1, type2], 
    FieldC=[type1, type2, type3], 
    FieldD=[type1, type2], 
    FieldE=[type3] 
} 

不Multimap之解決這個問題?

回答

5

它看起來像MultiMap是要走的路。該ImmutableMultiMap#inverse()方法就是我一直在尋找:

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); 

... ...產生

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]} 
相關問題