【问题标题】:How to use replaceValues method of Guava Multimap?如何使用 Guava Multimap 的 replaceValues 方法?
【发布时间】:2012-04-16 08:13:05
【问题描述】:

我想在 Guava 提供的 MultiMap 中添加、删除和替换值。

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

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

使用 Guava 库可以更轻松地删除值。

myMultimap.remove(1,(float)4.7);

但是如何使用 replaceValues 方法呢?

我的意思是这个

 myMultimap.replaceValues(1, (float)4.3);

假设我想用新值 5.99 替换值 4.3,我应该怎么做,该方法需要一些 Iterable 函数,我不确定如何实现它..

这是错误..

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

【问题讨论】:

    标签: java guava multimap


    【解决方案1】:

    Multimap.replaceValues 采用一组值替换给定键的现有值的所有。从 JavaDoc 看来您需要使用 remove 后跟 put

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

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

    【讨论】:

    • 谢谢,现在一切都说得通了……有什么办法可以替换多地图中的值吗?
    • @mirroredAbstraction - 只映射到一个键的所有值——不是一次一个。
    • 使用ListMultimapSetMultimap 时,Multimap#get 分别返回ListSetcode.google.com/p/guava-libraries/wiki/…
    【解决方案2】:
    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]}
    

    【讨论】:

      猜你喜欢
      • 2015-04-30
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 2015-09-12
      • 2014-05-25
      • 2010-12-07
      • 2012-10-28
      相关资源
      最近更新 更多