GrabDuck

Класс LinkedList | Java

:

Последнее обновление: 30.10.2015

Обобщенный класс LinkedList<E> представляет структуру данных в виде связанного списка. Он наследуется от класса AbstractSequentialList и реализует интерфейсы List, Dequeue и Queue.

Класс LinkedList имеет следующие конструкторы:

  • LinkedList(): создает пустой список

  • LinkedList(Collection<? extends E> col): создает список, в который добавляет все элементы коллекции col

LinkedList содержит ряд методов для управления элементами, среди которых можно выделить следующие:

  • addFirst() / offerFirst(): добавляет элемент в начало списка

  • addLast() / offerLast(): добавляет элемент в конец списка

  • removeFirst() / pollFirst(): удаляет первый элемент из начала списка

  • removeLast() / pollLast(): удаляет последний элемент из конца списка

  • getFirst() / peekFirst(): получает первый элемент

  • getLast() / peekLast(): получает последний элемент

Рассмотрим применение связанного списка:

package collectionapp;

import java.util.LinkedList;

public class CollectionApp {

    public static void main(String[] args) {
        
        LinkedList<String> states = new LinkedList<String>();
        
        // добавим в список ряд элементов
        states.add("Германия");
        states.add("Франция");
        states.addLast("Великобритания"); // добавляем на последнее место
        states.addFirst("Испания"); // добавляем на первое место
        states.add(1, "Италия"); // добавляем элемент по индексу 1
      
        System.out.printf("В списке %d элементов \n", states.size());
        System.out.println(states.get(1));
        states.set(1, "Дания");
        for(String state : states){
        
            System.out.println(state);
        }
        // проверка на наличие элемента в списке
        if(states.contains("Германия")){
        
            System.out.println("Список содержит государство Германия");
        }
        
        states.remove("Германия");
        states.removeFirst(); // удаление первого элемента
        states.removeLast(); // удаление последнего элемента
        
        LinkedList<Person> people = new LinkedList<Person>();
        people.add(new Person("Mike"));
        people.addFirst(new Person("Tom"));
        people.addLast(new Person("Nick"));
        people.remove(1); // удаление второго элемента
        
        for(Person p : people){
        
            System.out.println(p.getName());
        }
        Person first = people.getFirst();
        System.out.println(first.getName()); // вывод первого элемента
    }
}
class Person{
    
    private String name;
    public Person(String value){
        
        name=value;
    }
    String getName(){return name;}
}

Здесь создаются и используются два списка: для строк и для объектов класса Person. При этом в дополнение к методам addFirst/removeLast и т.д., нам также доступны стандартные методы, определенные в интерфейсе Collection: add(), remove, contains, size и другие. Поэтому мы можем использовать разные методы для одного и того же действия. Например, добавление в самое начало списка можно сделать так: states.addFirst("Испания");, а можно сделать так: states.add(0, "Испания");