Java 如何使用番石榴多重映射的替换值方法?

Java 如何使用番石榴多重映射的替换值方法?,java,guava,multimap,Java,Guava,Multimap,我想在Guava提供的多重映射中添加、删除和替换值 我目前这样做是为了增加价值 static Multimap<Integer, Float> myMultimap; myMultimap = ArrayListMultimap.create(); myMultimap.put(1, (float)4.3); myMultimap.put(2, (float)4.9); myMultimap.put(1, (float)4.7); myMultimap.put(1, (fl

我想在Guava提供的多重映射中添加、删除和替换值

我目前这样做是为了增加价值

static Multimap<Integer, Float> myMultimap;
 myMultimap = ArrayListMultimap.create();
 myMultimap.put(1, (float)4.3);
 myMultimap.put(2, (float)4.9);
 myMultimap.put(1, (float)4.7);
 myMultimap.put(1, (float)4.5);
但是如何使用replaceValues方法呢

我是说这个

 myMultimap.replaceValues(1, (float)4.3);
假设我想用一个新的值5.99替换值4.3,我应该怎么做,该方法需要一些可移植的函数,我不确定如何实现它

这就是错误

方法中的replaceValues(Integer,Iterable) 类型Multimap不适用于参数(int, 浮动)

获取一组值,这些值替换给定键的所有现有值。从JavaDoc来看,似乎需要使用
remove
,然后使用
put

如果映射是可修改的,则可以使用
get
获得映射到单个键的值集合的可修改视图,但返回的视图是一个普通的
集合
,没有原子替换方法。您始终可以创建自己的助手方法。请注意,此方法不是线程安全的

public static <K,V> boolean replaceValue(Multimap<K,V> map, K key, V oldValue, V newValue) {
    if (map.remove(key, oldValue)) {
        map.put(key, newValue);
        return true;
    }
    return false;
}
public静态布尔替换值(多映射映射、K键、V oldValue、V newValue){
if(映射移除(键,旧值)){
map.put(key,newValue);
返回true;
}
返回false;
}

谢谢,现在一切都有意义了。。。有什么方法可以替换多重映射中的值吗?@mirroredAbstraction-一次只能替换映射到一个键的所有值,而不是一个值。当使用
列表多重映射
设置多重映射
时,
多重映射#get
分别返回
列表
public static <K,V> boolean replaceValue(Multimap<K,V> map, K key, V oldValue, V newValue) {
    if (map.remove(key, oldValue)) {
        map.put(key, newValue);
        return true;
    }
    return false;
}
public class guava_main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
    
        Multimap map = HashMultimap.create();
    
        map.put("game", 1);
        map.put("game", 2);
    
        map.put("book", 4);
        map.put("book", 3);
    
        Iterable iter = map.get("book");
        map.replaceValues("game", iter);
    
        System.out.println(map);
    }
}

// result : {book=[4, 3], game=[4, 3]}