【问题标题】:Share variables between classes using Map (as Cache)使用 Map(作为缓存)在类之间共享变量
【发布时间】:2018-04-24 05:31:59
【问题描述】:

我想实现一个通用的缓存变量存储,以便在类之间共享。我有很多类,因为我使用 cucumber java webdriver,需要在步骤、页面对象/类之间共享。

我有课

public class Cache {
    private HashMap<String, String> cache = new HashMap<String, String>();

    public HashMap<String, String> getCache() {
        return cache;
    }
}

但问题是,设置键值对最有效的方法是什么?

我的想法是使用 getter 来获取和使用存储的变量,例如 cache.get("KEY") 并得到值。如何在这个缓存中高效地存储变量?

任何示例代码将不胜感激。

【问题讨论】:

标签: java caching hashmap


【解决方案1】:
  1. 当使用'cache.set(key,val)'时,明显的效率因素是 密钥和hash function 的选择。然而,在 99% 在我的项目中,它的效率足以使用 直接、直观的字符串键(例如,如果您的企业需要按出版商+标题缓存书籍,那么“penguin_prideAndPrejudice”可能会很好)。 但是,唯一确定的方法是在数据样本上进行测试!

    1. 附带说明,虽然这不是您最初的问题,但我建议您考虑线程安全(HashMap 不是线程安全的,因此对于并发环境,请考虑同步或 ConcurrentHashMap - 只需 beware of bugs in some versions
    2. 有 3rd 方缓存,例如 Guava,可能有助于高级缓存考虑,例如到期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2022-08-06
    • 2022-08-14
    • 2013-12-28
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    相关资源
    最近更新 更多