Рубрики

Коллекции на Яве

Коллекция — это группа отдельных объектов, представленных как единое целое. Java предоставляет Collection Framework, который определяет несколько классов и интерфейсов для представления группы объектов как единого блока.

Интерфейс Collection ( java.util.Collection ) и интерфейс Map ( java.util.Map ) являются двумя основными «корневыми» интерфейсами классов Java-коллекции.

Необходимость в Collection Framework:
До появления Collection Framework (или до выпуска JDK 1.2) стандартными методами группировки объектов Java (или коллекций) были Arrays, Vectors или Hashtables. Все эти коллекции не имели общего интерфейса.

Доступ к элементам этих структур данных был хлопотным, поскольку у каждого был свой метод (и синтаксис) для доступа к своим членам:

// Java-программа, показывающая, почему была необходима коллекция

import java.io.*;

import java.util.*;

  

class Test

{

    public static void main (String[] args)

    {

        // Создание экземпляров массива, вектора и хеш-таблицы

        int arr[] = new int[] {1, 2, 3, 4};

        Vector<Integer> v = new Vector();

        Hashtable<Integer, String> h = new Hashtable();

        v.addElement(1);

        v.addElement(2);

        h.put(1,"geeks");

        h.put(2,"4geeks");

  

        // Создание экземпляра массива требует [], а Vector

        // и hastable require ()

        // Для вставки векторного элемента требуется addElement (), но

        // для вставки хеш-таблицы требуется put ()

  

        // Доступ к первому элементу массива, вектора и хеш-таблицы

        System.out.println(arr[0]);

        System.out.println(v.elementAt(0));

        System.out.println(h.get(1));

  

        // Доступ к элементам массива осуществляется с помощью [], векторные элементы

        // используя elementAt () и элементы хеш-таблицы с использованием get ()

    }

}

Выход:

1
1
geeks

Как мы видим, ни одна из этих коллекций (Array, Vector или Hashtable) не реализует стандартный интерфейс доступа к элементам. Программистам было очень трудно писать алгоритмы, которые могли бы работать для всех видов коллекций. Другим недостатком является то, что большинство методов Vector являются окончательными, то есть мы не можем расширить класс Vector для реализации подобного рода Collection.
Разработчики Java решили придумать общий интерфейс для решения вышеупомянутых проблем и представили Framework Framework в JDK 1.2 .

Оба предыдущих Вектора и Hashtables были изменены, чтобы соответствовать Каркасу Коллекции.

Преимущества Collection Framework:

  1. Согласованный API: API имеет базовый набор интерфейсов, таких как Коллекция, Набор, Список или Карта. Все классы (ArrayList, LinkedList, Vector и т. Д.), Которые реализуют эти интерфейсы, имеют общий набор методов.
  2. Снижает затраты на программирование: программисту не нужно беспокоиться о дизайне Collection, и он может сосредоточиться на его наилучшем использовании в своей программе.
  3. Увеличивает скорость и качество программ: повышает производительность, предоставляя высокопроизводительные реализации полезных структур данных и алгоритмов.

Иерархия коллекции Framework

             Collection                Map
         /     /    \      \            |
        /      /      \     \           |
     Set    List    Queue  Dequeue   SortedMap
     /
    /
 SortedSet 
            Core Interfaces in Collections

Note that this diagram only shows core interfaces.  
Collection : Root interface with basic methods like add(), remove(), 
             contains(), isEmpty(), addAll(), ... etc.
 
Set : Doesn't allow duplicates. Example implementations of Set 
      interface are HashSet (Hashing based) and TreeSet (balanced
      BST based). Note that TreeSet implements SortedSet.

List : Can contain duplicates and elements are ordered. Example
       implementations are LinkedList (linked list based) and
       ArrayList (dynamic array based)

Queue : Typically order elements in FIFO order except exceptions
        like PriorityQueue.  

Deque : Elements can be inserted and removed at both ends. Allows
        both LIFO and FIFO. 

Map : Contains Key value pairs. Doesn't allow duplicates.  Example
      implementation are HashMap and TreeMap. 
      TreeMap implements SortedMap.        

The difference between Set and Map interface is that in Set we 
have only keys, whereas in Map, we have key, value pairs.

Мы скоро будем обсуждать примеры реализации интерфейса.

Эта статья предоставлена Dharmesh Singh . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Коллекции на Яве

0.00 (0%) 0 votes