«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > СТРУКТУРА КОЛЛЕКЦИИ JAVA

СТРУКТУРА КОЛЛЕКЦИИ JAVA

Опубликовано 7 ноября 2024 г.
Просматривать:543

Вопрос: Что такое Java Collection Framework?

Среда Ans Java Collection — это мощная встроенная библиотека, которая предоставляет набор оптимизированных реализаций наиболее часто используемых структур данных и алгоритмов. Она широко используется при создании Java-приложений и решении задач разработки реального программного обеспечения. проблемы.


Какие преимущества Java Collection Framework?

Ответ Некоторые из преимуществ платформы Java Collection:

  1. Унифицированная архитектура: каждая структура данных является производной от таких интерфейсов, как итерируемый интерфейс и интерфейс коллекции, что обеспечивает ощущение общих реализаций.
  2. Простота использования: он упрощает процесс разработки, предоставляя предварительно созданные структуры данных и алгоритмы. Разработчик может больше сосредоточиться на бизнес-логике, а не на ручной реализации и оптимизации часто используемых структур данных и стандартных алгоритмов.
  3. Гибкость: если мы хотим изменить базовые структуры данных, мы можем сделать это легко, не беспокоясь о том, что изменение структуры данных приведет к изменению шаблонов поиска и доступа к данным (в основном).
  4. Потокобезопасность: поскольку Java предоставляет возможность запускать процессы в разных потоках по отдельности, Java Collection Framework предоставляет различные классы для запуска в многопоточных средах и однопоточных приложениях.

ИЕРАРХИЯ СТРУКТУРЫ КОЛЛЕКЦИИ JAVA

JAVA COLLECTION FRAMEWORK


ПЕРЕРАБОТИМЫЙ ИНТЕРФЕЙС
Интерфейс Iterable в Java является ключевым компонентом Collection Framework. Это корневой интерфейс для всех типов коллекций, которые можно перебирать. Реализация интерфейса Iterable позволяет объекту быть целью «цикла for-each» (также известного как расширенный цикл for).
Также он предоставляет объект-итератор, который можно использовать для прямой итерации всех структур данных, реализующих этот итерируемый интерфейс.

Пример использования FOR EACH LOOP (ENHANCED FOR LOOP)

Внутренне ArrayList реализует список, а интерфейс списка расширяет интерфейс коллекции, а интерфейс коллекции расширяет итерируемый интерфейс.

List list = new ArrayList();//Объявление структуры данных
list.add("Java");//Добавить элемент
list.add("Коллекции");//Добавить элемент
list.add("Framework");//Добавить элемент
for (Строковый элемент: список) {//Итерация с использованием расширенного цикла for
System.out.println(элемент);
}

Пример использования объекта ITERABLE

Iterator итератор = list.iterator();
в то время как (iterator.hasNext()) {
Строковый элемент = iterator.next();
System.out.println(элемент);
}

Таким образом, мы можем создать собственный итерируемый объект, реализуя итерируемый интерфейс и переопределив методы next, hasNext и delete. Вот пример того же самого.

import java.util.Iterator;
class CustomIterable implements Iterable {
    private final int[] numbers = {1, 2, 3, 4, 5};

    @Override
    public Iterator iterator() {
        return new Iterator() {
            private int index = 0;
            private int lastReturnedIndex = -1;

            @Override
            public boolean hasNext() {
                return index 



Примечание :

  1. Итераторы в Java работают безотказно. Это означает, что если коллекция изменяется во время итерации (за исключением собственного метода удаления() итератора), она выдает исключение ConcurrentModificationException.
  2. Метод remove() может удалять только элементы, и его следует вызывать только один раз за каждый вызов next(). В противном случае будет выдано исключение IllegalStateException.

Интерфейс коллекции

Это интерфейс, благодаря которому структуры данных и внутренние реализации становятся гибкими. В основном все классы реализуют этот интерфейс косвенно, позволяя изменять реализацию, просто изменяя объект, назначенный ссылке на него в коллекции.

//ArrayList
Collection c = new ArrayList():
c.add(1);
c.add(2);
c.contains(1);

Collection c1 = new LinkedList():
c1.addAll(c);//Array added to a linked list

/*What if i dont want arraylist but now i want a priority queue for applying efficient algorithms such as findmax and find min*/
//Just Change Object - SIMPLE!
Collection c = new **PriorityQueue**():
c.add(1);
c.add(2);
c.contains(1);

Методы интерфейса сбора данных

  1. int size : Возвращает размер коллекции.
  2. boolean isEmpty : возвращает true, если коллекция пуста.
  3. boolean contains(Object o) : возвращает true, если объект o существует в коллекции.
  4. Iterator iterator(): возвращает итератор, указывающий на коллекцию.
  5. Object[] toArray() : конвертирует коллекцию в массив типа Object.
  6. T[] toArray(T[] a) : возвращает массив, содержащий все элементы коллекции; тип времени выполнения возвращаемого массива соответствует указанному массиву.
  7. boolean add(E e) : добавляет элемент e в коллекцию. Возвращает true, если операция прошла успешно.
  8. boolean remove(Object o) : удаляет объект o из коллекции. Возвращает true, если операция прошла успешно.
  9. boolean containsAll(Collection> c) ​​: возвращает true, если все элементы в обеих коллекциях одинаковы. Возвращает true, если операция прошла успешно. 10.boolean addAll(Collection расширяет E> c) : добавляет все элементы обеих коллекций. Возвращает true, если операция прошла успешно.
  10. логическое значение RemoveAll(Collection> c) ​​: удаляет элемент коллекции c из коллекции вызывающего объекта. Возвращает true, если операция прошла успешно.
  11. boolean saveAll(Collection> c) ​​: сохраняет только элементы, присутствующие в коллекции c.
  12. voidclear() : Очищает все элементы из коллекции.

Реализуя класс коллекции, мы можем переопределить вышеуказанные методы для создания собственной коллекции. Ниже приведен пример того же самого.

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.NoSuchElementException;

public class CustomCollection implements Collection {
    private final ArrayList list = new ArrayList();

    @Override
    public int size() {
        return list.size();
    }

    @Override
    public boolean isEmpty() {
        return list.isEmpty();
    }

    @Override
    public boolean contains(Object o) {
        return list.contains(o);
    }

    @Override
    public Iterator iterator() {
        return new Iterator() {
            private int index = 0;

            @Override
            public boolean hasNext() {
                return index  T[] toArray(T[] a) {
        return list.toArray(a);
    }

    @Override
    public boolean add(E e) {
        return list.add(e);
    }

    @Override
    public boolean remove(Object o) {
        return list.remove(o);
    }

    @Override
    public boolean containsAll(Collection> c) {
        return list.containsAll(c);
    }

    @Override
    public boolean addAll(Collection extends E> c) {
        return list.addAll(c);
    }

    @Override
    public boolean removeAll(Collection> c) {
        return list.removeAll(c);
    }

    @Override
    public boolean retainAll(Collection> c) {
        return list.retainAll(c);
    }

    @Override
    public void clear() {
        list.clear();
    }
}


Интерфейс списка

Интерфейс List в Java является частью Java Collections Framework и расширяет интерфейс Collection. Он представляет собой упорядоченную коллекцию (также известную как последовательность), которая допускает позиционный доступ, дублирование элементов и перебор ее элементов. Интерфейс List реализован несколькими классами, такими как ArrayList, LinkedList, Vector и Stack.

Основные характеристики интерфейса списка:

  1. Упорядоченная коллекция: список сохраняет порядок вставки элементов, то есть доступ к элементам можно получить по их индексу.
  2. Разрешает дубликаты: список может содержать повторяющиеся элементы, в отличие от наборов, которые не допускают дубликатов.
  3. Позиционный доступ: к элементам списка можно получить доступ, добавить или удалить их по индексу.
  4. Итерация: интерфейс List позволяет использовать расширенные циклы for, а также итерацию с использованием Iterator или ListIterator.

Распространенные методы интерфейса списка:
Все методы интерфейса коллекции также реализуются интерфейсом List, поскольку интерфейс List расширяет интерфейс Collection.

  1. void add(int index, E element): вставляет указанный элемент E по указанному индексу в этом списке.
  2. E get(int index): возвращает элемент в указанной позиции в этом списке.
  3. E удалить(int index): удаляет элемент в указанной позиции в этом списке.
  4. E set(int index, E element): Заменяет элемент в указанной позиции в этом списке указанным элементом.
  5. int indexOf(Object o): возвращает индекс первого вхождения указанного элемента или -1, если список не содержит этот элемент.
  6. intlastIndexOf(Object o): Возвращает индекс последнего вхождения указанного элемента или -1, если список не содержит этот элемент.
  7. List subList(int fromIndex, int toIndex): возвращает представление части этого списка между указанным fromIndex, включительно, и toIndex, исключая.
import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("Java");
        list.add("Collections");
        list.add("Framework");

        // Accessing elements by index
        System.out.println("First Element: "   list.get(0));

        // Removing an element by index
        list.remove(1);
        System.out.println("After Removal: "   list);

        // Updating an element
        list.set(1, "Updated Element");
        System.out.println("Updated List: "   list);

        // Using a sublist
        List sublist = list.subList(0, 1);
        System.out.println("Sublist: "   sublist);
    }
}

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/harsh_kanpara_e78fd42c5a/java-collection-framework-4fm8?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3