logo

Інтерфейс списку в Java з прикладами

Інтерфейс списку в Java забезпечує спосіб зберігання впорядкованої колекції. Це дочірній інтерфейс Колекція . Це впорядкована колекція об’єктів, у якій можуть зберігатися повторювані значення. Оскільки List зберігає порядок вставки, він дозволяє позиційний доступ і вставку елементів.

Зміст

Інтерфейс списку в Java

Інтерфейс List міститься в пакеті java.util і успадковує інтерфейс Collection. Це фабрика інтерфейсу ListIterator. За допомогою ListIterator ми можемо ітерувати список у прямому та зворотному напрямках. Класами реалізації інтерфейсу List є ArrayList, LinkedList, Stack і Vector. ArrayList і LinkedList широко використовуються в програмуванні на Java. Клас Vector застарів з Java 5.



Список і ArrayList у Java Collection Framework

Декларація інтерфейсу списку Java

public interface List extends Collection ;>

Давайте докладніше розглянемо створення об’єктів або екземплярів у класі List. Оскільки Список є інтерфейс , не можна створювати об’єкти типу list. Нам завжди потрібен клас, який це реалізує Список щоб створити об'єкт. А також, після введення в Дженерики у Java 1.5 можна обмежити тип об’єкта, який можна зберігати в списку. Подібно до кількох інших визначених користувачем «інтерфейсів», реалізованих визначеними користувачем «класами», Список це «інтерфейс», реалізований за допомогою ArrayList клас, заздалегідь визначений в java.util пакет.

Синтаксис списку Java

Цей тип безпечного списку можна визначити як:

List list = new ArrayList ();>

Примітка: Obj — це тип об’єкта, який буде збережено в списку

Приклад списку Java

Java




// Java program to Demonstrate List Interface> > // Importing all utility classes> import> java.util.*;> > // Main class> // ListDemo class> class> GFG {> > >// Main driver method> >public> static> void> main(String[] args)> >{> > >// Creating an object of List interface> >// implemented by the ArrayList class> >List l1 =>new> ArrayList();> > >// Adding elements to object of List interface> >// Custom inputs> > >l1.add(>0>,>1>);> >l1.add(>1>,>2>);> > >// Print the elements inside the object> >System.out.println(l1);> > >// Now creating another object of the List> >// interface implemented ArrayList class> >// Declaring object of integer type> >List l2 =>new> ArrayList();> > >// Again adding elements to object of List interface> >// Custom inputs> >l2.add(>1>);> >l2.add(>2>);> >l2.add(>3>);> > >// Will add list l2 from 1 index> >l1.addAll(>1>, l2);> > >System.out.println(l1);> > >// Removes element from index 1> >l1.remove(>1>);> > >// Printing the updated List 1> >System.out.println(l1);> > >// Prints element at index 3 in list 1> >// using get() method> >System.out.println(l1.get(>3>));> > >// Replace 0th element with 5> >// in List 1> >l1.set(>0>,>5>);> > >// Again printing the updated List 1> >System.out.println(l1);> >}> }>

>

>

Вихід

[1, 2] [1, 1, 2, 3, 2] [1, 2, 3, 2] 2 [5, 2, 3, 2]>

Тепер давайте виконаємо різні операції за допомогою інтерфейсу списку, щоб краще зрозуміти їх. Ми обговоримо наступні операції, перелічені нижче, а пізніше їх реалізацію за допомогою чистих кодів Java.

Операції в інтерфейсі списку Java

Оскільки List є інтерфейсом, його можна використовувати лише з класом, який реалізує цей інтерфейс. Тепер давайте подивимося, як виконати кілька часто використовуваних операцій зі списком.

  • Операція 1: Додавання елементів до класу List за допомогою методу add().
  • Операція 2: Оновлення елементів у класі List за допомогою методу set().
  • Операція 3: Пошук елементів за допомогою методів indexOf(), lastIndexOf
  • Операція 4: Видалення елементів за допомогою методу remove().
  • Операція 5: Доступ до елементів у класі List за допомогою методу get().
  • Операція 6: Перевірка наявності елемента в класі List за допомогою методу contains().

Тепер давайте обговоримо операції окремо та запровадимо їх у код, щоб краще зрозуміти його.

1. Додавання елементів до класу List за допомогою метод add().

Щоб додати елемент до списку, ми можемо використовувати додати() метод. Цей метод перевантажений для виконання кількох операцій на основі різних параметрів.

Параметри: Він приймає 2 параметри, а саме:

  • add(Object): Цей метод використовується для додавання елемента в кінець списку.
  • add(int index, Object): Цей метод використовується для додавання елемента за певним індексом у списку

приклад:

Java

stringbuilder




// Java Program to Add Elements to a List> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an object of List interface,> >// implemented by ArrayList class> >List al =>new> ArrayList();> > >// Adding elements to object of List interface> >// Custom elements> >al.add(>'Geeks'>);> >al.add(>'Geeks'>);> >al.add(>1>,>'For'>);> > >// Print all the elements inside the> >// List interface object> >System.out.println(al);> >}> }>

>

>

Вихід

[Geeks, For, Geeks]>

2. Оновлення елементів

Після додавання елементів, якщо ми хочемо змінити елемент, це можна зробити за допомогою набір() метод. Оскільки List індексується, на елемент, який ми хочемо змінити, посилається індекс елемента. Таким чином, цей метод приймає індекс і оновлений елемент, який потрібно вставити в цей індекс.

приклад:

Java




// Java Program to Update Elements in a List> > // Importing utility classes> import> java.util.*;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an object of List interface> >List al =>new> ArrayList();> > >// Adding elements to object of List class> >al.add(>'Geeks'>);> >al.add(>'Geeks'>);> >al.add(>1>,>'Geeks'>);> > >// Display theinitial elements in List> >System.out.println(>'Initial ArrayList '> + al);> > >// Setting (updating) element at 1st index> >// using set() method> >al.set(>1>,>'For'>);> > >// Print and display the updated List> >System.out.println(>'Updated ArrayList '> + al);> >}> }>

>

>

Вихід

Initial ArrayList [Geeks, Geeks, Geeks] Updated ArrayList [Geeks, For, Geeks]>

3. Пошук елементів

Пошук елементів в інтерфейсі списку є звичайною операцією в програмуванні на Java. Інтерфейс List надає кілька методів пошуку елементів, наприклад indexOf() , lastIndexOf() методи.

Метод indexOf() повертає індекс першого входження зазначеного елемента в списку, а метод lastIndexOf() повертає індекс останнього входження зазначеного елемента.

Параметри:

  • indexOf(елемент): Повертає індекс першого входження зазначеного елемента в списку або -1, якщо елемент не знайдено
  • lastIndexOf(елемент): Повертає індекс останнього входження зазначеного елемента в список або -1, якщо елемент не знайдено

приклад:

Java




import> java.util.ArrayList;> import> java.util.List;> > public> class> ListExample {> >public> static> void> main(String[] args)> >{> >// create a list of integers> >List numbers =>new> ArrayList();> > >// add some integers to the list> >numbers.add(>1>);> >numbers.add(>2>);> >numbers.add(>3>);> >numbers.add(>2>);> > >// use indexOf() to find the first occurrence of an> >// element in the list> >int> index = numbers.indexOf(>2>);> >System.out.println(> >'The first occurrence of 2 is at index '> >+ index);> > >// use lastIndexOf() to find the last occurrence of> >// an element in the list> >int> lastIndex = numbers.lastIndexOf(>2>);> >System.out.println(> >'The last occurrence of 2 is at index '> >+ lastIndex);> >}> }>

>

найкрасивіша усмішка в світі
>

Вихід

The first occurrence of 2 is at index 1 The last occurrence of 2 is at index 3>

4. Видалення елементів

Щоб видалити елемент зі списку, ми можемо використати видалити() метод. Цей метод перевантажений для виконання кількох операцій на основі різних параметрів. Вони є:

Параметри:

  • видалити (об'єкт): Цей метод використовується для простого видалення об’єкта зі списку. Якщо таких об’єктів декілька, видаляється перший випадок об’єкта.
  • видалити (індекс індексу): Оскільки список індексується, цей метод приймає ціле число, яке просто видаляє елемент, присутній у цьому конкретному індексі в списку. Після видалення елемента всі елементи переміщуються вліво, щоб заповнити простір, а індекси об’єктів оновлюються.

приклад:

Java




// Java Program to Remove Elements from a List> > // Importing List and ArrayList classes> // from java.util package> import> java.util.ArrayList;> import> java.util.List;> > // Main class> class> GFG {> > >// Main driver method> >public> static> void> main(String args[])> >{> > >// Creating List class object> >List al =>new> ArrayList();> > >// Adding elements to the object> >// Custom inputs> >al.add(>'Geeks'>);> >al.add(>'Geeks'>);> > >// Adding For at 1st indexes> >al.add(>1>,>'For'>);> > >// Print the initialArrayList> >System.out.println(>'Initial ArrayList '> + al);> > >// Now remove element from the above list> >// present at 1st index> >al.remove(>1>);> > >// Print the List after removal of element> >System.out.println(>'After the Index Removal '> + al);> > >// Now remove the current object from the updated> >// List> >al.remove(>'Geeks'>);> > >// Finally print the updated List now> >System.out.println(>'After the Object Removal '> >+ al);> >}> }>

>

>

Вихід

Initial ArrayList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>

5. Доступ до елементів

Щоб отримати доступ до елемента в списку, ми можемо використовувати отримати() метод, який повертає елемент із вказаним індексом

Параметри:

get(int index): цей метод повертає елемент із вказаним індексом у списку.

приклад:

Java




// Java Program to Access Elements of a List> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an object of List interface,> >// implemented by ArrayList class> >List al =>new> ArrayList();> > >// Adding elements to object of List interface> >al.add(>'Geeks'>);> >al.add(>'For'>);> >al.add(>'Geeks'>);> > >// Accessing elements using get() method> >String first = al.get(>0>);> >String second = al.get(>1>);> >String third = al.get(>2>);> > >// Printing all the elements inside the> >// List interface object> >System.out.println(first);> >System.out.println(second);> >System.out.println(third);> >System.out.println(al);> >}> }>

>

структура в структурі даних
>

Вихід

Geeks For Geeks [Geeks, For, Geeks]>

6. Перевірка наявності елемента в списку

Щоб перевірити, чи присутній елемент у списку, ми можемо використовувати містить() метод. Цей метод повертає true, якщо вказаний елемент присутній у списку, інакше повертає false.

Параметри:

містить (об’єкт): цей метод приймає один параметр, об’єкт, який потрібно перевірити, якщо він присутній у списку.

приклад:

Java




// Java Program to Check if an Element is Present in a List> > // Importing all utility classes> import> java.util.*;> > // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating an object of List interface,> >// implemented by ArrayList class> >List al =>new> ArrayList();> > >// Adding elements to object of List interface> >al.add(>'Geeks'>);> >al.add(>'For'>);> >al.add(>'Geeks'>);> > >// Checking if element is present using contains()> >// method> >boolean> isPresent = al.contains(>'Geeks'>);> > >// Printing the result> >System.out.println(>'Is Geeks present in the list? '> >+ isPresent);> >}> }>

>

>

Вихід

Is Geeks present in the list? true>

Складність інтерфейсу списку в Java

Операція

Часова складність

Космічна складність

Додавання елемента в інтерфейс списку

О(1)

О(1)

Видалити елемент з інтерфейсу списку

O(N)

O(N)

Замінити елемент в інтерфейсі списку

O(N)

O(N)

Інтерфейс списку обходу

O(N)

O(N)

Ітерація через інтерфейс списку в Java

Досі ми маємо дуже малий розмір вхідних даних, і ми виконуємо операції вручну для кожної сутності. Тепер давайте обговоримо різні способи, за допомогою яких ми можемо перебирати список, щоб змусити їх працювати для більшої вибірки.

Методи: Існує кілька способів ітерації списку. Найвідоміші способи — за допомогою основного для циклу у поєднанні з a метод get(). щоб отримати елемент із певним індексом і передовий для петлі .

приклад:

Java




// Java program to Iterate the Elements> // in an ArrayList> > // Importing java utility classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// main driver method> >public> static> void> main(String args[])> >{> >// Creating an empty Arraylist of string type> >List al =>new> ArrayList();> > >// Adding elements to above object of ArrayList> >al.add(>'Geeks'>);> >al.add(>'Geeks'>);> > >// Adding element at specified position> >// inside list object> >al.add(>1>,>'For'>);> > >// Using for loop for iteration> >for> (>int> i =>0>; i // Using get() method to // access particular element System.out.print(al.get(i) + ' '); } // New line for better readability System.out.println(); // Using for-each loop for iteration for (String str : al) // Printing all the elements // which was inside object System.out.print(str + ' '); } }>

>

>

Вихід

Geeks For Geeks Geeks For Geeks>

Методи інтерфейсу списку

Оскільки основна концепція різних типів списків однакова, інтерфейс списку містить такі методи:

метод

опис

add(int індекс, елемент) Цей метод використовується з Java List Interface, щоб додати елемент до певного індексу в списку. Коли передається один параметр, він просто додає елемент у кінець списку.
addAll(int index, Collection collection) Цей метод використовується з інтерфейсом списку в Java для додавання всіх елементів у вказаній колекції до списку. Коли передається один параметр, він додає всі елементи даної колекції в кінець списку.
розмір() Цей метод використовується з Java List Interface для повернення розміру списку.
очистити() Цей метод використовується для видалення всіх елементів зі списку. Однак посилання на створений список все ще зберігається.
видалити (індекс) Цей метод видаляє елемент із зазначеного індексу. Він зсуває наступні елементи (якщо такі є) ліворуч і зменшує їхні індекси на 1.
видалити (елемент) Цей метод використовується з Java List Interface, щоб видалити перше входження даного елемента у списку.
отримати (індекс індексу) Цей метод повертає елементи за вказаним індексом.
набір (індекс, елемент) Цей метод замінює елементи з заданим індексом на новий елемент. Ця функція повертає елемент, який щойно був замінений новим елементом.
indexOf(елемент) Цей метод повертає перше входження даного елемента або -1 якщо елемент відсутній у списку.
lastIndexOf(елемент) Цей метод повертає останнє входження заданого елемента або -1 якщо елемент відсутній у списку.
дорівнює (елемент) Цей метод використовується з Java List Interface для порівняння рівності даного елемента з елементами списку.
hashCode() Цей метод використовується з інтерфейсом списку в Java для повернення значення хеш-коду заданого списку.
пусто() Цей метод використовується з Java List Interface, щоб перевірити, чи список порожній. Він повертає true, якщо список порожній, інакше повертає false.
містить (елемент) Цей метод використовується з інтерфейсом списку в Java, щоб перевірити, чи містить список даний елемент чи ні. Він повертає true, якщо список містить елемент.
міститьВсе (колекція колекції) Цей метод використовується з Java List Interface, щоб перевірити, чи список містить усю колекцію елементів.
sort (Comparator comp) Цей метод використовується з інтерфейсом списку в Java для сортування елементів списку на основі заданого компаратор .

Список Java проти набору

І інтерфейс List, і інтерфейс Set успадковують інтерфейс Collection. Проте між ними є деякі відмінності.

Список

встановити

Список — це впорядкована послідовність. Набір є невпорядкованою послідовністю.
Список дозволяє повторювати елементи Набір не допускає повторюваних елементів.
Можна отримати доступ до елементів за їх положенням. Доступ до елементів не дозволяється.
Можна зберігати кілька нульових елементів. Нульовий елемент може зберігатися лише один раз.
Реалізаціями списків є ArrayList, LinkedList, Vector, Stack Реалізаціями наборів є HashSet, LinkedHashSet.

Асоціація класів з інтерфейсом списку Java

Тепер давайте обговоримо класи, які реалізують інтерфейс списку, для чого спочатку зверніться до графічного представлення нижче, щоб краще зрозуміти інтерфейс списку. Він полягає в наступному:

AbstractList , CopyOnWriteArrayList , і AbstractSequentialList це класи, які реалізують інтерфейс List. У кожному із зазначених класів реалізована окрема функціональність. Вони такі:

рядок java в json
  1. AbstractList: Цей клас використовується для реалізації незмінюваного списку, для якого потрібно лише розширити цей клас AbstractList і реалізувати лише отримати() і розмір() методи.
  2. CopyOnWriteArrayList: Цей клас реалізує інтерфейс списку. Це розширена версія ArrayList у якому всі зміни (додавання, встановлення, видалення тощо) реалізуються шляхом створення нової копії списку.
  3. AbstractSequentialList: Цей клас реалізує Інтерфейс колекції і клас AbstractCollection. Цей клас використовується для реалізації незмінюваного списку, для якого потрібно лише розширити цей клас AbstractList і реалізувати лише отримати() і розмір() методи.

Ми будемо діяти таким чином.

  • ArrayList
  • Вектор
  • Стек
  • LinkedList

Давайте обговоримо їх послідовно та реалізуємо те саме, щоб зрозуміти, як працюють класи з інтерфейсом List.

1. ArrayList

ArrayList клас, реалізований у рамках колекції, надає нам динамічні масиви в Java. Хоча це може бути повільніше, ніж стандартні масиви, але може бути корисним у програмах, де потрібно багато маніпулювати масивом. Давайте подивимося, як створити об’єкт списку за допомогою цього класу.

приклад:

Java




// Java program to demonstrate the> // creation of list object using the> // ArrayList class> > import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Size of ArrayList> >int> n =>5>;> > >// Declaring the List with initial size n> >List arrli =>new> ArrayList(n);> > >// Appending the new elements> >// at the end of the list> >for> (>int> i =>1>; i <= n; i++)> >arrli.add(i);> > >// Printing elements> >System.out.println(arrli);> > >// Remove element at index 3> >arrli.remove(>3>);> > >// Displaying the list after deletion> >System.out.println(arrli);> > >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(arrli.get(i) + ' '); } }>

>

>

Вихід

[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>

2. Вектор

Вектор — це клас, реалізований у рамках колекції, що реалізує масив об’єктів, що збільшується. Vector реалізує динамічний масив, який означає, що він може збільшуватися або зменшуватися за потреби. Як і масив, він містить компоненти, до яких можна отримати доступ за допомогою цілочисельного індексу. Вектори в основному належать до застарілих класів, але тепер вони повністю сумісні з колекціями. Давайте подивимося, як створити об’єкт списку за допомогою цього класу.

приклад:

Java




// Java program to demonstrate the> // creation of list object using the> // Vector class> > import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Size of the vector> >int> n =>5>;> > >// Declaring the List with initial size n> >List v =>new> Vector(n);> > >// Appending the new elements> >// at the end of the list> >for> (>int> i =>1>; i <= n; i++)> >v.add(i);> > >// Printing elements> >System.out.println(v);> > >// Remove element at index 3> >v.remove(>3>);> > >// Displaying the list after deletion> >System.out.println(v);> > >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(v.get(i) + ' '); } }>

>

>

Вихід

[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>

3. Стек

Stack — це клас, реалізований у рамках колекції, який розширює векторні моделі класу та реалізує приклад:

Java

приклад:

Java




// Java program to demonstrate the> // creation of list object using the> // Stack class> > import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Size of the stack> >int> n =>5>;> > >// Declaring the List> >List s =>new> Stack();> > >// Appending the new elements> >// at the end of the list> >for> (>int> i =>1>; i <= n; i++)> >s.add(i);> > >// Printing elements> >System.out.println(s);> > >// Remove element at index 3> >s.remove(>3>);> > >// Displaying the list after deletion> >System.out.println(s);> > >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(s.get(i) + ' '); } }>

>

>

Вихід

[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>

4. LinkedList

приклад:

листоноша

Java

LinkedList — це клас, реалізований у рамках колекції, яка за своєю суттю реалізує
приклад:

Java

приклад:

Java




// Java program to demonstrate the> // creation of list object using the> // LinkedList class> > import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Size of the LinkedList> >int> n =>5>;> > >// Declaring the List with initial size n> >List ll =>new> LinkedList();> > >// Appending the new elements> >// at the end of the list> >for> (>int> i =>1>; i <= n; i++)> >ll.add(i);> > >// Printing elements> >System.out.println(ll);> > >// Remove element at index 3> >ll.remove(>3>);> > >// Displaying the list after deletion> >System.out.println(ll);> > >// Printing elements one by one> >for> (>int> i =>0>; i System.out.print(ll.get(i) + ' '); } }>

>

>

Вихід

[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5>