пятница, 25 февраля 2011 г.

Изучаем коллекции

Java Collections Framework - очень важный и объемный (в смысле нужно много знать) набор классов-контейнеров. Описывать фреймоворк (будем его так называть) я не буду - я не спец + в каждой книжке по java есть нормальное описание. Скажу о проблемах и о том, как я сейчас изучаю коллекции.

Проблемы: 
Набор классов очень прост и логичен по своей структуре. Но классов реально много и нужно запоминать черем ArrayList отличается о HashSet'а, что лучше в каких ситуациях. С первого раза запомнить все точно не удастся

Как я изучаю:

  1. Прочитал раздел в книге "Философия Java" Брюса Эккеля - составил общее представление
  2. Поискал информацию про коллекции в интернете. Хорошее описание нашел только здесь - достаточно кратко и понятно. Даже лучше, чем в книге, на мой взгляд. 
  3. Повторно прочитал про коллекции в Core Java(TM), Volume I--Fundamentals. Пока читал про HasSet'ы разобрался (насколько это возможно на данном этапе) с equals, compareTo и hashCode
  4. Повторно прочитал про коллекции, разобрался с производительностью.
  5. Ответил на вопросы, которые нашел в интернете (ниже)
  6. Поделал упражнения Эккеля 
Изучая коллекции (как и все остальное), старайтесь не запоминать, а понимать - почему ArrayList работает медленнее LinkedList при вставке / удалении объектов, почему hashCode необходимо переопределять с equals и т.д. Если понять, как устроен ArrayList, LinkedList, HashSet и т.д. все становится ясно. 
Меропреятий я проделал, действительно, много. Но что-то в голове точно останется =)
Список вопросов, на которые я ответил сразу после прочтения документации
  1. Назовите основные интерфейсы коллекций и их имплементации
  2. Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?
  3. Чем отличается HashMap от Hashtable?
  4. Чем отличается ArrayList от Vector?
  5. Чем отличаются объявления List<Integer> от Collection<Integer>?
  6. Объясните отличия между HashSet, TreeSet
  7. Каким образом можно синхронизировать методы HashMap, ArrayList?
  8. Назовите особенности интерфейса Set
  9. Как правильно удалить элемент из ArrayList?
  10. Дан TreeSet, добавили несколько элементов в виде цифр. Что будет при выводе данных с помощью итератора?
  11. Привести пример, когда лучше использовать Map, а когда наоборот Set
 Вопросы, ответы на которые необходимо было уточнить
  1. Каким образом можно отсортировать коллекцию?
  2. Объясните отличия между HashSet, LinkedHashSet

    Комментариев нет:

    Отправить комментарий