有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java guava映射支持的guava函数

我想创建一个由番石榴函数支持的只读映射。给定一个键,我有一个提供值的函数

Function f = new Function() {
    public Object apply(final Object key) {
        return ...;
     }
};

Map m = mapBasedOnFunction(f); // is this possible with Guava?

m.get(some key); // the value is provided by the function

用番石榴可以吗

我理解迭代,size()。。。不起作用,这里不需要。实际上,我只需要get()函数就可以了

多谢各位


共 (3) 个答案

  1. # 1 楼答案

    我真的不确定你在这里想要实现什么,但正如乔治所提到的,这样的事情应该会奏效:

    public class FunctionMap extends HashMap<Object, Object> {
        private Function<Object, Object> function;
    
        public FunctionMap(Function<Object, Object> function) { this.function = function; }
    
        @Override
        public Object get(Object key) { return function.apply(key); }
    }
    
  2. # 2 楼答案

    恐怕反过来是可能的。你使用函数。forMap()并为其提供一个映射,该调用将其转换为一个可以用作映射表的函数

    我不确定你能不能用番石榴来做

  3. # 3 楼答案

    您可以使用Maps.toMap来实现这一点,但需要提供Iterable个密钥

    Function f = ...
    Set keys = ...
    Map map = Maps.toMap( keys, f );
    

    没有这些键,地图就无法真正处理.size().entrySet()