Skip to content

Commit cec5fd8

Browse files
Cupcake-masterenhorse
authored andcommitted
Update jcf.md
1 parent 92ac2cc commit cec5fd8

1 file changed

Lines changed: 11 additions & 11 deletions

File tree

jcf.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
+ [В чем разница между классами `java.util.Collection` и `java.util.Collections`?](#В-чем-разница-между-классами-javautilcollection-и-javautilcollections)
99
+ [Что такое «fail-fast поведение»?](#Что-такое-fail-fast-поведение)
1010
+ [Какая разница между fail-fast и fail-safe?](#Какая-разница-между-fail-fast-и-fail-safe)
11-
+ [Приведите примеры итераторов реализующих поведение fail-safe](#Приведите-примеры-итераторов-реализующих-поведение-fail-safe)
11+
+ [Приведите примеры итераторов, реализующих поведение fail-safe](#Приведите-примеры-итераторов-реализующих-поведение-fail-safe)
1212
+ [Чем различаются `Enumeration` и `Iterator`.](#Чем-различаются-enumeration-и-iterator)
1313
+ [Как между собой связаны `Iterable` и `Iterator`?](#Как-между-собой-связаны-iterable-и-iterator)
1414
+ [Как между собой связаны `Iterable`, `Iterator` и «for-each»?](#Как-между-собой-связаны-iterable-iterator-и-for-each)
@@ -117,7 +117,7 @@ _«Коллекция»_ - это структура данных, набор к
117117
+ `Hashtable` — хэш-таблица, методы которой синхронизированы. Не позволяет использовать `null` в качестве значения или ключа и не является упорядоченной.
118118
+ `HashMap` — хэш-таблица. Позволяет использовать `null` в качестве значения или ключа и не является упорядоченной.
119119
+ `LinkedHashMap` — упорядоченная реализация хэш-таблицы.
120-
+ `TreeMap` — реализация основанная на красно-чёрных деревьях. Является упорядоченной и предоставляет возможность управлять порядком элементов в коллекции при помощи объекта `Comparator`, либо сохраняет элементы с использованием «natural ordering».
120+
+ `TreeMap` — реализация, основанная на красно-чёрных деревьях. Является упорядоченной и предоставляет возможность управлять порядком элементов в коллекции при помощи объекта `Comparator`, либо сохраняет элементы с использованием «natural ordering».
121121
+ `WeakHashMap` — реализация хэш-таблицы, которая организована с использованием _weak references_ для ключей (сборщик мусора автоматически удалит элемент из коллекции при следующей сборке мусора, если на ключ этого элемента нет жёстких ссылок).
122122

123123
[к оглавлению](#java-collections-framework)
@@ -166,7 +166,7 @@ __fail-fast поведение__ означает, что при возникн
166166

167167
[к оглавлению](#java-collections-framework)
168168

169-
## Приведите примеры итераторов реализующих поведение fail-safe
169+
## Приведите примеры итераторов, реализующих поведение fail-safe
170170
Итератор коллекции `CopyOnWriteArrayList` и итератор представления `keySet` коллекции `ConcurrentHashMap` являются примерами итераторов fail-safe.
171171

172172
[к оглавлению](#java-collections-framework)
@@ -256,8 +256,8 @@ FILO, First-In-Last-Out («первым пришел, последним уше
256256
+ доступ к произвольному элементу по индексу за _константное_ время _O(1)_;
257257
+ доступ к элементам по значению за _линейное_ время _O(N)_;
258258
+ вставка в конец в среднем производится за _константное_ время _O(1)_;
259-
+ удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (capacity) не изменяется);
260-
+ вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы находящиеся «правее» смещаются на одну ячейку вправо;
259+
+ удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (capacity) не изменяется);
260+
+ вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку вправо;
261261
+ минимум накладных расходов при хранении.
262262

263263
`LinkedList`:
@@ -267,7 +267,7 @@ FILO, First-In-Last-Out («первым пришел, последним уше
267267
+ вставка или удаление в/из произвольного место _константное_ _O(1)_;
268268
+ требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка.
269269

270-
В целом, `LinkedList` в абсолютных величинах проигрывает `ArrayList` и по потребляемой памяти и по скорости выполнения операций. `LinkedList` предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список.
270+
В целом, `LinkedList` в абсолютных величинах проигрывает `ArrayList` и по потребляемой памяти, и по скорости выполнения операций. `LinkedList` предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список.
271271

272272
[к оглавлению](#java-collections-framework)
273273

@@ -279,7 +279,7 @@ FILO, First-In-Last-Out («первым пришел, последним уше
279279
[к оглавлению](#java-collections-framework)
280280

281281
## Какое худшее время работы метода `contains()` для элемента, который есть в `LinkedList`?
282-
_O(N)_. Время поиска элемента линейно пропорционально количеству элементов с списке.
282+
_O(N)_. Время поиска элемента линейно пропорционально количеству элементов в списке.
283283

284284
[к оглавлению](#java-collections-framework)
285285

@@ -307,7 +307,7 @@ _O(N)_. Вставка элемента в конец списка осущес
307307

308308
## Как происходит удаление элементов из `ArrayList`? Как меняется в этом случае размер `ArrayList`?
309309

310-
При удалении произвольного элемента из списка, все элементы находящиеся «правее» смещаются на одну ячейку влево и реальный размер массива (его емкость, capacity) не изменяется никак. Механизм автоматического «расширения» массива существует, а вот автоматического «сжатия» нет, можно только явно выполнить «сжатие» командой `trimToSize()`.
310+
При удалении произвольного элемента из списка, все элементы, находящиеся «правее» смещаются на одну ячейку влево и реальный размер массива (его емкость, capacity) не изменяется никак. Механизм автоматического «расширения» массива существует, а вот автоматического «сжатия» нет, можно только явно выполнить «сжатие» командой `trimToSize()`.
311311

312312
[к оглавлению](#java-collections-framework)
313313

@@ -481,9 +481,9 @@ private static class Node<E> {
481481

482482
## Сравните интерфейсы `Queue` и `Deque`.
483483
## Кто кого расширяет: `Queue` расширяет `Deque`, или `Deque` расширяет `Queue`?
484-
`Queue` - это очередь, которая обычно (но необязательно) строится по принципу FIFO (First-In-First-Out) - соответственно извлечение элемента осуществляется с начала очереди, вставка элемента - в конец очереди. Хотя этот принцип нарушает, к примеру `PriorityQueue`, использующая «natural ordering» или переданный `Comparator` при вставке нового элемента.
484+
`Queue` - это очередь, которая обычно (но необязательно) строится по принципу FIFO (First-In-First-Out) - соответственно извлечение элемента осуществляется с начала очереди, вставка элемента - в конец очереди. Хотя этот принцип нарушает, к примеру, `PriorityQueue`, использующая «natural ordering» или переданный `Comparator` при вставке нового элемента.
485485

486-
`Deque` (Double Ended Queue) расширяет `Queue` и согласно документации это линейная коллекция, поддерживающая вставку/извлечение элементов с обоих концов. Помимо этого реализации интерфейса `Deque` могут строится по принципу FIFO, либо LIFO.
486+
`Deque` (Double Ended Queue) расширяет `Queue` и согласно документации, это линейная коллекция, поддерживающая вставку/извлечение элементов с обоих концов. Помимо этого, реализации интерфейса `Deque` могут строится по принципу FIFO, либо LIFO.
487487

488488
Реализации и `Deque`, и `Queue` обычно не переопределяют методы `equals()` и `hashCode()`, вместо этого используются унаследованные методы класса Object, основанные на сравнении ссылок.
489489

@@ -512,7 +512,7 @@ private static class Node<E> {
512512
[к оглавлению](#java-collections-framework)
513513

514514
## `Stack` считается «устаревшим». Чем его рекомендуют заменять? Почему?
515-
`Stack` был добавлен в Java 1.0 как реализация стека LIFO (last-in-first-out) и является расширением коллекции `Vector`, хотя это несколько нарушает понятие стека (например, класс `Vector` предоставляет возможность обращаться к любому элементу по индексу). Является частично синхронизированной коллекцией (кроме метода добавления `push()`) с вытекающими отсюда последствиями в виде негативного воздействия на производительность. После добавления в Java 1.6 интерфейса `Deque`, рекомендуется использовать реализации именно этого интерфейса, например `ArrayDeque`.
515+
`Stack` был добавлен в Java 1.0 как реализация стека LIFO (last-in-first-out) и является расширением коллекции `Vector`, хотя это несколько нарушает понятие стека (например, класс `Vector` предоставляет возможность обращаться к любому элементу по индексу). Является частично синхронизированной коллекцией (кроме метода добавления `push()`) с вытекающими отсюда последствиями в виде негативного воздействия на производительность. После добавления в Java 1.6 интерфейса `Deque`, рекомендуется использовать реализации именно этого интерфейса, например, `ArrayDeque`.
516516

517517
[к оглавлению](#java-collections-framework)
518518

0 commit comments

Comments
 (0)