Bunu Guava ile nasıl yapabiliriz? Dönüş türünde List<K>
varlığına dikkat edin, çünkü birçok tuş herhangi bir normal haritadaki aynı değere eşlenebilir. Eşsiz değerler ile Guava ile harita inversiyonu nasıl yapılır?
public static <K, V> Map<V, List<K>> inverse(Map<K, V> map){
Map<V, List<K>> result = new LinkedHashMap<V, List<K>>();
for (Map.Entry<K, V> entry : map.entrySet()) {
if(!result.containsKey(entry.getValue())){
result.put(entry.getValue(), new ArrayList<K>());
}
result.get(entry.getValue()).add(entry.getKey());
}
return result;
}
BiMap
Güzel, bu hızlıydı. – lacroix1547
Ancak, Multimap'a dönüştürmek zorunda kalmak can sıkıcı bir durumdur. Ve performanslara gösterdikleri çaba göz önüne alındığında, gelecekte daha seksi bir şeyle geliştirilebilir. – lacroix1547
@ lacroix1547 Huh? 'Multimaps.forMap()', verilen haritanın _view_ değerini döndürür. Neredeyse hiç iş yok ... sadece bir kurucu çağırıyor ve haritayı bir alana atar. Bu kadar. Bir haritayı, bir "Çok Noktalı" bekleyeni "invertFrom()" gibi yöntemlerle kullanmanızı sağlayan bir bağdaştırıcıyı düşünün. – ColinD