Когда я должен использовать ConcurrentSkipListMap?

Я на самом деле проверил бы Сервер Основы Команды. Это - очень хорошая система, которая может масштабироваться, и, вероятно, легко пройти внутренний это отделы. Я знаю, что это - центральный Windows, но можно использовать дополнения для Linux/Mac также, и можно использовать прокси для некоторых сайтов с медленными соединениями.

И я думал бы о наличии 2 систем в крупной организации, оно может помочь получению лучшего в некоторых отдельных случаях.

72
задан DKSRathore 29 November 2009 в 06:59
поделиться

2 ответа

Эти два класса различаются по-разному.

ConcurrentHashMap не гарантирует * время выполнения своих операций в рамках своего контракта. Он также позволяет настраивать определенные коэффициенты нагрузки (грубо говоря, количество потоков, одновременно изменяющих его).

ConcurrentSkipListMap , с другой стороны, гарантирует среднюю производительность O (log (n)) для широкого спектра операций. Он также не поддерживает настройку ради параллелизма. ConcurrentSkipListMap также имеет ряд операций, которых нет в ConcurrentHashMap : потолокEntry / Key, floorEntry / Key и т. Д. Он также поддерживает порядок сортировки, который в противном случае пришлось бы рассчитывать за значительные деньги), если вы использовали ConcurrentHashMap .

В основном, разные реализации предоставляются для разных вариантов использования. Если вам нужно быстрое добавление пары ключ / значение и быстрый поиск одного ключа, используйте HashMap . Если вам нужен более быстрый обход по порядку и вы можете позволить себе дополнительные затраты на вставку, используйте SkipListMap .

* Хотя я ожидаю, что реализация примерно соответствует общим гарантиям хэш-карты O (1) вставка / поиск; игнорирование повторного хеширования

68
ответ дан 24 November 2019 в 12:44
поделиться

Сортировано , с возможностью навигации и одновременным использованием

См. Список пропуска для определения структуры данных.

ConcurrentSkipListMap хранит карту в естественном порядке ее ключей (или в каком-либо другом порядке ключей, который вы определяете). Таким образом, get / put / содержит операций медленнее, чем HashMap , но для компенсации этого он поддерживает Интерфейсы SortedMap , NavigableMap и ConcurrentNavigableMap .

15
ответ дан 24 November 2019 в 12:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: