我想创建一个由芭乐函数支持的只读Map。我有一个函数,在给定一个键的情况下提供值。
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使用Guava可以做到这点吗?
我知道迭代,size(),...将不工作,这在这里不是必需的。实际上,我只需要get()函数是有功能的。
非常感谢。
发布于 2014-09-12 20:03:04
您可以使用Maps.toMap来做到这一点,但是您需要提供密钥的Iterable。
Function f = ...
Set keys = ...
Map map = Maps.toMap( keys, f );如果没有键,映射就不能真正处理.size()或.entrySet()。
发布于 2014-09-12 18:42:34
AFAIK反转是可能的。您使用Functions.forMap()并为其提供一个映射,此调用将其转换为一个可用作映射表的函数。
我不确定你能不能用芭乐做到这一点
发布于 2016-04-01 04:27:39
我真的不确定你在这里想要实现什么,但是--就像George提到的--这样的东西应该是可行的:
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); }
}https://stackoverflow.com/questions/25806366
复制相似问题