Когда должен я использовать Список по сравнению с LinkedList

Эта конструкция называется Тернарным оператором в области компьютерных наук и программирования. И Wikipedia предлагают следующее объяснение:

В информатике троичный оператор (иногда неправильно называемый третичным оператором) является оператором, который принимает три аргумента. Аргументы и результат могут быть разных типов. Многие языки программирования, использующие синтаксис C-типа, имеют тройной оператор,? :, который определяет условное выражение.

blockquote>

Не только в Java этот синтаксис доступен в PHP, Objective-C тоже .

В следующей ссылке он дает следующее объяснение, которое очень приятно понять:

Тернарный оператор - это некоторая операция, выполняющая на 3 входах. Это ярлык для оператора if-else и также известен как условный оператор.

В Perl / PHP он работает как: boolean_condition ? true_value : false_value

В C / C ++ он работает как: logical expression ? action for true : action for false

blockquote>

Это может быть читаемо для некоторых логических условий, которые не слишком сложны, в противном случае лучше использовать блок If-Else с предполагаемой комбинацией условной логики.

Мы можем упростить блоки If-Else с помощью этого оператора Ternary для одной строки оператора кода. Например:

if ( car.isStarted() ) {
     car.goForward();
} else {
     car.startTheEngine();
}

Возможно, это будет следующее:

( car.isStarted() ) ? car.goForward() : car.startTheEngine();

Итак, если мы ссылаемся на ваше утверждение:

int count = isHere ? getHereCount(index) : getAwayCount(index);

Это фактически 100% эквивалент следующего блока If-Else:

int count;
if (isHere) {
    count = getHereCount(index);
} else {
    count = getAwayCount(index);
}

Вот и все! Надеюсь, это помогло кому-то! Ура!

372
задан Colonel Panic 30 August 2018 в 04:14
поделиться

4 ответа

Связанные списки обеспечивают очень быструю вставку или удаление участника списка. Каждый участник в связанном списке содержит указатель на следующего участника в списке так, который введет участника в положении i:

  • обновляют указатель в участнике i-1 для указания новому участнику
  • , устанавливает указатель в новом участнике для указания участнику i

, который недостаток к связанному списку - то, что произвольный доступ не возможен. Доступ к участнику требует пересечения списка, пока желаемый участник не найден.

118
ответ дан b3. 23 November 2019 в 00:04
поделиться

Различие между Списком и LinkedList заключается в их конкретной реализации. Список является основанным на массиве набором (ArrayList). LinkedList является основанным на указателе узла набором (LinkedListNode). На использовании уровня API они оба - в значительной степени то же начиная с обеих реализаций тот же набор интерфейсов, таких как ICollection, IEnumerable, и т.д.

, основное отличие прибывает когда вопрос производительности. Например, если Вы реализуете список, который начинает тяжелую операцию "ВСТАВКИ", LinkedList превосходит Список по характеристикам. Так как LinkedList может сделать это в O (1) время, но Список, возможно, должен развернуть размер основного массива. Для большей информации/детали Вы могли бы хотеть читать на алгоритмическом различии между структурами данных массива и LinkedList. http://en.wikipedia.org/wiki/Linked_list и Массив

Hope эта справка,

18
ответ дан Siddharth Rout 23 November 2019 в 00:04
поделиться

При необходимости во встроенном индексном доступе, сортируя (и после этого двоичного поиска), и "ToArray ()" метод, необходимо использовать Список.

2
ответ дан Michael Damatov 23 November 2019 в 00:04
поделиться

В большинстве случаев, List<T> более полезно. LinkedList<T> будет менее стоить при добавлении/удалении объектов посреди списка, тогда как List<T> может только дешево добавить/удалить в конец из списка.

LinkedList<T> только в, он является самым эффективным при доступе к последовательным данным (или вперед или назад) - произвольный доступ является относительно дорогим, так как это должно обойти цепочку каждый раз, когда (следовательно, почему это не имеет индексатора). Однако, потому что List<T> по существу просто массив (с оберткой), произвольный доступ прекрасен.

List<T> также предложения много методов поддержки - Find, ToArray, и т.д.; однако, они также доступны для LinkedList<T> с.NET 3.5/C# 3.0 с помощью дополнительных методов - так, чтобы было меньше фактора.

264
ответ дан p.s.w.g 23 November 2019 в 00:04
поделиться