首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >guava - map支持的guava函数

guava - map支持的guava函数
EN

Stack Overflow用户
提问于 2014-09-12 18:38:06
回答 3查看 243关注 0票数 3

我想创建一个由芭乐函数支持的只读Map。我有一个函数,在给定一个键的情况下提供值。

代码语言:javascript
复制
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()函数是有功能的。

非常感谢。

EN

回答 3

Stack Overflow用户

发布于 2014-09-12 20:03:04

您可以使用Maps.toMap来做到这一点,但是您需要提供密钥的Iterable

代码语言:javascript
复制
Function f = ...
Set keys = ...
Map map = Maps.toMap( keys, f );

如果没有键,映射就不能真正处理.size().entrySet()

票数 4
EN

Stack Overflow用户

发布于 2014-09-12 18:42:34

AFAIK反转是可能的。您使用Functions.forMap()并为其提供一个映射,此调用将其转换为一个可用作映射表的函数。

我不确定你能不能用芭乐做到这一点

票数 1
EN

Stack Overflow用户

发布于 2016-04-01 04:27:39

我真的不确定你在这里想要实现什么,但是--就像George提到的--这样的东西应该是可行的:

代码语言:javascript
复制
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); }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25806366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档