2016-08-20 3 views
0

Я хочу знать, когда использовать Set и List.On, на основе которого это нужно решить. Например, когда мы имеем дело с приложением заказа, на этом что я должен использовать? Список any = new ArrayList <>(); или Установите any = new HashSet(); или LinkedList.Как определить, какая коллекция должна использоваться из списка?

+4

немало вопросов вокруг сделки с этим. Посмотрите, например. http://stackoverflow.com/questions/1035008/what-is-the-difference-between-set-and-list, http://stackoverflow.com/questions/322715/when-to-use-linkedlist-over -arraylist – lrnzcig

+0

http://stackoverflow.com/a/21974362/1545775 –

ответ

2

Все зависит от ваших текущих требований

к примеру, рассмотрим некоторые важные моменты, о

  1. Если вы хотите получить доступ к элементам таким же образом вы их вставляете, то вы должны используйте List, потому что List - это упорядоченная коллекция элементов. Вы можете получить к ним доступ с использованием метода get(int index), тогда как такой метод недоступен для Set. Порядок, в котором они будут храниться, не гарантируется.

  2. Если элементы содержат дубликаты, а затем использовать List, потому что Set не допускают дубликаты, тогда как, если ваши элементы являются уникальными, то вы можете использовать Set.

  3. Насколько LinkedList и ArrayList считаются:

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

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

также смотрите:
- When to use LinkedList over ArrayList?
- What is the difference between Set and List?
- What Java Collection should I use?
- Insertion in the middle of ArrayList vs LinkedList

Смежные вопросы