Информация об изменениях

Сообщение Re[3]: Хипстеры против unordered map, счёт 1:0 от 15.01.2019 21:51

Изменено 15.01.2019 21:51 vsb

Re[3]: Хипстеры против unordered map, счёт 1:0
Здравствуйте, netch80, Вы писали:

N>Здравствуйте, vsb, Вы писали:


vsb>>Нифига не понял. Хешмап для одних задач, линкедхешмап для других.


N>А какие такие задачи решает HashMap, что LinkedHashMap не справляется?


Хранение данных без расхода памяти на два лишних указателя и операции с данными без траты времени на манипуляцию с этими указателями.

Вот HashMap.Node:
        final int hash;
        final K key;
        V value;
        Node<K,V> next;


А вот LinkedHashMap.Entry (extends HashMap.Node):
        Entry<K,V> before, after;


Размер первого объекта примерно 16 + 4 + 8 + 8 + 8 = 44 байта. Размер второго объекта 60 байтов. На 36% больше. Зачем лишние расходы? Может тогда вообще HashMap не использовать, выдумать какой-нибудь LinkedTreeMap, там и отсортированно можно вытянуть, вдруг пригодится, и в порядке вставки.
Re[3]: Хипстеры против unordered map, счёт 1:0
Здравствуйте, netch80, Вы писали:

vsb>>Нифига не понял. Хешмап для одних задач, линкедхешмап для других.


N>А какие такие задачи решает HashMap, что LinkedHashMap не справляется?


Хранение данных без расхода памяти на два лишних указателя и операции с данными без траты времени на манипуляцию с этими указателями.

Вот HashMap.Node:
        final int hash;
        final K key;
        V value;
        Node<K,V> next;


А вот LinkedHashMap.Entry (extends HashMap.Node):
        Entry<K,V> before, after;


Размер первого объекта примерно 16 + 4 + 8 + 8 + 8 = 44 байта. Размер второго объекта 60 байтов. На 36% больше. Зачем лишние расходы? Может тогда вообще HashMap не использовать, выдумать какой-нибудь LinkedTreeMap, там и отсортированно можно вытянуть, вдруг пригодится, и в порядке вставки.