JCS: используется сложный объект или строка в качестве ключа

У меня есть вопрос о том, как.get (ключ) работает.

Если я использую сложный объект в качестве ключа, я понял, что функция equals не вызывается. Но которые ссылаются на структуру, используемую для идентификации ключевых объектов.

Мне нужно знать, какой из них быстрее? Строка или Объект как ключ?

1 ответ

Это функция get, getCacheControl() возвращает IMemoryCache<K, V> реализация.

https://github.com/apache/commons-jcs/blob/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/access/CacheAccess.java

@Override
    public V get( K name )
    {
        ICacheElement<K, V> element = this.getCacheControl().get( name );

        return ( element != null ) ? element.getVal() : null;
    } 

AbstractMemoryCache, реализующий IMemoryCache и использующий карту,
https://github.com/apache/commons-jcs/blob/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/memory/AbstractMemoryCache.java

/** Map where items are stored by key.  This is created by the concrete child class. */
    public Map<K, MemoryElementDescriptor<K, V>> 

Таким образом, мы можем предположить аналогичную семантику. Составные объекты не должны иметь никакого значения, может быть, вы забыли переопределить hashCode, Карта сначала использует это, чтобы найти ведро, позже использует equals,

Другие вопросы по тегам