(I) Сбор и коллекции
Оба расположены под пакетом java.util, разница в:
Коллекция представляет собой интерфейс сбора, с общими поднтерфаксами, такими как список листиков, и является первым узлом графика Framework Collection. Он предоставляет серию методов выполнения основных операций на объектах сбора.
Общие методы:
логическое добавление (e e) добавить элементы в контейнер; int size () возвращает количество элементов коллекции; Boolean isempty () определяет, пуст ли контейнер; Boolean содержит (объект o) Если эта коллекция содержит указанный элемент, он возвращает true, и здесь будет использоваться метод equals (); логическое удаление (объект o) Удаляет экземпляр указанного элемента; и т. д.
Коллекции - это класс обертки, который содержит различные статические полиморфные методы для операций сбора, которые содержит полиморфные алгоритмы, работающие на сборе, то есть «обертка», которая возвращает новую коллекцию, поддерживаемую указанной коллекцией, и несколько других вещей.
Общие методы:
void sort (список) сортирует содержимое списка.
Здесь следует отметить, что (PS: Следующее объяснение о Sort () выходит из краткого обсуждения массива объектов или принципов сортировки и сортировки сортировки списков .
Функция сортировки в таком роде () функция Arrays.sort ().
@Suppresswarnings ("unchecked") public static <t расширяется сопоставимо <? Super t >> void sort (list <t> list) {object [] array = list.toarray (); Arrays.sort (массив); int i = 0; ListIterator <t> it = list.listiterator (); while (it.hasnext ()) {it.next (); it.set ((t) массив [i ++]); }} В Arrays.sort () можно видеть, что он реализован через comparateTimsort.sort (Object [] a): public static void sort (Object [] Array) {// начинать Android-изменяемый comparateTimsort.sort (массив); // конец Android-измененный} Статическая void sort (Object [] a) к статической void sort (Object [] a, int lo, int hi) к частному статическому бинарноскорту (объект [] a, int lo, int hi, int start). В бинарном составе часть, используемая для сравнения размеров: Сопоставимо <object> pivot = (сопоставимо) a [start]; int left = lo; int right = start; Утверждайте влево <= справа; while (слева <справа) {int mid = (слева + справа) >>> 1; if (pivot.compareto (a [mid]) <0) right = mid; еще слева = середина + 1; }Единственный метод сопоставимого интерфейса используется в бинарном поиске: compareto (). Если все пользовательские классы загружаются в контейнер и должны сравниваться, необходимо реализовать сопоставимый интерфейс или наследовать класс компаратора и переопределить метод сравнения ().
int BinarySearch (объект списка) Для последовательных контейнеров списка метод получения полуполучания используется для поиска указанного объекта; void Reverse (список) организует объекты в контейнере списка в обратном порядке; и т. д.
(Ii) Итератор и итератно
Во -первых, итерабильный находится под пакетом Java.Lang, а итератор расположен под пакетом java.util. В структуре сбора три метода определяются на интерфейсе итератора: Boolean hasnext (); e next (); void remove (). Итерабильный определяет только один метод: iterator (), возвращаемое значение - это объект, который реализует интерфейс итератора. Коллекция наследует супер интерфейс итерабильного, поэтому все классы реализации в рамках сбора имеют метод итератор (), а полиморфизм позволяет ссылаться на итератор доступ к детали (то есть к этим трем методам) в текущей коллекции, которая реализует итератор. Если вам нужно удалить элементы в настоящее время, поскольку итератор завершает блокировку этой операции коллекции, вы можете использовать метод remod () rement () итератор во время перемещения цикла с итератором и не может использовать собственный метод collection remove (Object).
Так почему же мы должны реализовать итерабильный интерфейс? Почему бы не реализовать интерфейс итератора? Таким образом, класс сбора может непосредственно наследовать эти три метода?
Взгляните на уроки сбора в JDK, такие как семейство списков или семейство Set, которые реализуют итерабильный интерфейс, но не реализуйте интерфейс итератор.
Подумайте об этом тщательно и имейте смысл.
Потому что основные методы интерфейса итератора Next () или hasNext () зависят от текущей итерационной позиции итератора.
Если коллекция напрямую реализует интерфейс итератора, она неизбежно приведет к объекту сбора, содержащим данные (указатель) в текущей итерационной позиции.
Когда сбор проходит между различными методами, поскольку текущая итерационная позиция не является задачей, результат следующего () метода становится непредсказуемым.
Если метод сброса () не добавлен в интерфейс итератора для сброса текущей позиции итерации.
Но в этом случае коллекция может иметь только одно текущее местоположение итерации одновременно.
Итерабильный не тот случай, и каждый вызов возвращает итератор с нуля с нуля.
Несколько итераторов не мешают друг другу.
Приведенная выше статья основана на некоторых запутанных точках знаний (подробное объяснение) в коллекции Java. Я надеюсь, что это может дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.