Д.з.№9 Последовательные коллекции

Для коллекций LinkedList, ArrayList и ArrayDeque (для поддерживаемых операций) измерить время выполнения следующих операций:
  1. В изначально пустой коллекции произвести 100 тыс. вставок в начало.
  2. В изначально пустой коллекции произвести 100 тыс. вставок в конец.
  3. В изначально пустой коллекции произвести 100 тыс. вставок в случайные позиции.
  4. В коллекции, содержащей 100 тыс. элементов, произвести 100 тыс. модификаций случайно выбранных элементов.
Результаты экспериментов объяснить и занести в следующую таблицу:
коллекцияначало конец случайная модификация 
ArrayList    
LinkedList    
ArrayDeque    
Технические подробности
  • Измерение времени удобно производить с помощью метода currentTimeMillis из класса System.
  • Используйте преимущества полиморфизма, чтобы уменьшить себе объем работы. Также можно использовать "дженерики" (в 13 главе Хорстманн называет их "универсальными типами") - чтобы уменьшить код еще сильнее.

Контрольные вопросы

  1. Объясните полученные результаты.
  2. Обязательно найдите у каждой коллекции какое-то преимущество перед двумя другими - благодаря которому разработчики Java не удалили эту коллекцию из стандартной библиотеки.
  3. Какие вы сделали выводы? В каких ситуациях в вашей программистской практике вы будете использовать ArrayList, в каких - LinkedList, а в каких - ArrayDeque?
  4. Какой контейнер лучше всего работает в каждой из следующих ситуаций:
    1. Много вставок и удалений с обоих концов контейнера?
    2. Много вставок и удалений с одного конца?
    3. Много вставок и удалений в разные позиции в середине массива?
Comments