Эмпирическое правило для выбора реализации коллекции Java?
Я предполагаю, что вы знаете collections разницу между списком, набором collections и картой из приведенных выше jdk ответов. Другое дело, почему core-java вы должны выбирать между .java их реализующими классами. Например:
Список:
- ArrayList быстро извлекается, но медленно вставляется. Это хорошо для реализации, которая много читает, но мало что вставляет/удаляет. Он хранит свои данные в одном непрерывном блоке памяти, поэтому каждый раз, когда ему нужно расшириться, он копирует весь массив.
- LinkedList медленно извлекается, но быстро вставляется. Это хорошо для реализации, которая много вставляет/удаляет, но мало читает. Он не хранит весь массив в одном непрерывном блоке памяти.
Набор:
- HashSet не гарантирует порядок итерации и, следовательно, является самым быстрым набором. Он имеет большие накладные расходы и медленнее, чем ArrayList, поэтому его не следует использовать, за исключением большого объема данных, когда его скорость хеширования становится фактором.
- TreeSet сохраняет порядок данных, поэтому работает медленнее, чем HashSet.
Карта: Производительность core-java и поведение HashMap и TreeMap core-java аналогичны реализациям Set.
Не oraclejdk следует использовать Vector java-api и Hashtable. Это синхронизированные core-java реализации до выпуска новой .java иерархии коллекций, поэтому j2se они медленные. Если необходима .java синхронизация, используйте java-libraries Collections.synchronizedCollection().
java
collections
heuristics
Эмпирическое правило для выбора реализации коллекции Java?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.