Страницы

Поиск по вопросам

пятница, 29 ноября 2019 г.

Отличие коллекций от массивов

#java #алгоритм


Из практики лучше работать с коллекциями чем с массивами. Но вот конкретно почему
не понятно. Потому что коллекции параметризируются объектами, а не примитивами?, так
и массивы тоже могут иметь тип добавляемых значений, по массиву можно так же проитерироваться
как и по коллекции, также существуют Util классы как для массивов так и для коллекций.
Нужен ответ на следующие вопросы:


Чем коллекции лучше массивов?
В чем преимущества коллекций над массивами? 
Когда лучше использовать массивы, чем коллекции?

    


Ответы

Ответ 1



Мне кажется, что вы путаете понятия. Если вам достаточно функционала массива, то используйте его, проблем никаких. Но в коллекциях значительно больше возможностей найти что-то действительно подходящее под задачи. Классический алгоритм выбора коллекции (для Java под рукой нет, у кого есть замените, но идея от этого не изменится): При этом массивы здесь находятся в блоке array. vector - это уже динамический массив ближе к ArrayList<>. Безусловно любой алгоритм и любую структуру из коллекций можно реализовать самому, но зачем?.. Непосредственно по вопросам: Чем коллекции лучше массивов? В них больше функционала, делать это над массивами зачастую нецелесообразно (или плохое качество кода или долго реализовывать или требуют хорошего понимания алгоритмов). Когда лучше использовать массивы, чем коллекции? Когда нужно хранить набор данных фиксированного размера. Смотри картинку с выбором.

Ответ 2



Давайте по порядку: Чем коллекции лучше массивов? Если вы работаете с примитивными типами, и не хотите тратить время на boxing/unboxing, то массивы предпочтительнее. Но если вы используете обычные классы, то лучше воспользоваться коллекциями, потому что массивы коварианты. Т.е. с ними легко написать не type-safe код. Например, такой: Integer[] a1 = new Integer[10]; Object[] a2 = a1; a2[0] = "привет ArrayStoreException!"; При этом компилятор ни разу не скажет, что это не правильно. В чем преимущества коллекций над массивами? Все зависит сильно от ваших задач. В коллекциях много различных структур данных, с разными свойствами. Например, Set - множество уникальных элементов, TreeSet - множество уникальных отсортированных элементов, List - список, сохраняющий порядок вставки, и т.д. Тут нельзя дать определенный ответ, тут скорее вопрос о целесообразности применения. Если вам в какой то момент не будет хватать простого массива, то смело используйте collection. Когда лучше использовать массивы, чем коллекции? см. пункт 2.

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

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