Java LinkedList 클래스는 이중 연결 목록을 사용하여 요소를 저장합니다. 연결된 목록 데이터 구조를 제공합니다. AbstractList 클래스를 상속하고 List 및 Deque 인터페이스를 구현합니다.
Java LinkedList의 중요한 점은 다음과 같습니다.
- Java LinkedList 클래스에는 중복 요소가 포함될 수 있습니다.
- Java LinkedList 클래스는 삽입 순서를 유지합니다.
- Java LinkedList 클래스가 동기화되지 않았습니다.
- Java LinkedList 클래스에서는 이동이 필요하지 않기 때문에 조작이 빠릅니다.
- Java LinkedList 클래스는 목록, 스택 또는 대기열로 사용할 수 있습니다.
LinkedList 클래스의 계층 구조
위 다이어그램에서 볼 수 있듯이 Java LinkedList 클래스는 AbstractSequentialList 클래스를 확장하고 List 및 Deque 인터페이스를 구현합니다.
언제나 모키토
이중 연결리스트
이중 연결 리스트의 경우 양쪽에서 요소를 추가하거나 제거할 수 있습니다.
LinkedList 클래스 선언
java.util.LinkedList 클래스 선언을 살펴보겠습니다.
이진 검색을 위한 Python 프로그램
public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable, Serializable
Java LinkedList의 생성자
건설자 | 설명 |
---|---|
링크드리스트() | 빈 목록을 구성하는 데 사용됩니다. |
LinkedList(컬렉션 c) | 지정된 컬렉션의 요소를 포함하는 목록을 컬렉션의 반복자가 반환하는 순서대로 구성하는 데 사용됩니다. |
Java LinkedList의 메소드
방법 | 설명 |
---|---|
부울 추가(E e) | 목록의 끝에 지정된 요소를 추가하는 데 사용됩니다. |
void add(int 인덱스, E 요소) | 목록의 지정된 위치 인덱스에 지정된 요소를 삽입하는 데 사용됩니다. |
부울 addAll(컬렉션 c) | 지정된 컬렉션의 반복자가 반환하는 순서대로 지정된 컬렉션의 모든 요소를 이 목록의 끝에 추가하는 데 사용됩니다. |
부울 addAll(컬렉션 c) | 지정된 컬렉션의 반복자가 반환하는 순서대로 지정된 컬렉션의 모든 요소를 이 목록의 끝에 추가하는 데 사용됩니다. |
부울 addAll(int 인덱스, 컬렉션 c) | 목록의 지정된 위치에서 시작하여 지정된 컬렉션의 모든 요소를 추가하는 데 사용됩니다. |
무효 addFirst(E e) | 목록의 시작 부분에 지정된 요소를 삽입하는 데 사용됩니다. |
무효 addLast(E e) | 주어진 요소를 목록 끝에 추가하는 데 사용됩니다. |
무효 클리어() | 목록에서 모든 요소를 제거하는 데 사용됩니다. |
객체 복제() | ArrayList의 얕은 복사본을 반환하는 데 사용됩니다. |
부울 포함(객체 o) | 목록에 지정된 요소가 포함되어 있으면 true를 반환하는 데 사용됩니다. |
반복자 내림차순Iterator() | deque의 요소에 대해 역순으로 반복자를 반환하는 데 사용됩니다. |
E요소() | 목록의 첫 번째 요소를 검색하는 데 사용됩니다. |
E get(int 인덱스) | 목록의 지정된 위치에 있는 요소를 반환하는 데 사용됩니다. |
E getFirst() | 목록의 첫 번째 요소를 반환하는 데 사용됩니다. |
E getLast() | 목록의 마지막 요소를 반환하는 데 사용됩니다. |
int indexOf(객체 o) | 지정된 요소가 처음 나타나는 목록의 인덱스를 반환하거나 목록에 요소가 없으면 -1을 반환하는 데 사용됩니다. |
int lastIndexOf(객체 o) | 지정된 요소가 마지막으로 나타나는 목록의 인덱스를 반환하거나 목록에 요소가 없으면 -1을 반환하는 데 사용됩니다. |
ListIterator listIterator(int 인덱스) | 목록의 지정된 위치에서 시작하여 적절한 순서로 요소의 목록 반복자를 반환하는 데 사용됩니다. |
부울 제안(E e) | 지정된 요소를 목록의 마지막 요소로 추가합니다. |
불리언 OfferFirst(E e) | 목록 앞에 지정된 요소를 삽입합니다. |
불리언 OfferLast(E e) | 목록 끝에 지정된 요소를 삽입합니다. |
이 엿보기() | 목록의 첫 번째 요소를 검색합니다. |
E peekFirst() | 목록의 첫 번째 요소를 검색하거나 목록이 비어 있으면 null을 반환합니다. |
E peekLast() | 목록의 마지막 요소를 검색하거나 목록이 비어 있으면 null을 반환합니다. |
전자설문() | 목록의 첫 번째 요소를 검색하고 제거합니다. |
E pollFirst() | 목록의 첫 번째 요소를 검색하여 제거하거나 목록이 비어 있으면 null을 반환합니다. |
E pollLast() | 목록의 마지막 요소를 검색하여 제거하거나 목록이 비어 있으면 null을 반환합니다. |
그리고 팝() | 목록으로 표시되는 스택에서 요소를 팝합니다. |
무효 푸시(E e) | 목록으로 표시되는 스택에 요소를 푸시합니다. |
E 제거() | 목록의 첫 번째 요소를 검색하고 제거하는 데 사용됩니다. |
E 제거(int 인덱스) | 목록의 지정된 위치에 있는 요소를 제거하는 데 사용됩니다. |
부울 제거(객체 o) | 목록에서 지정된 요소의 첫 번째 항목을 제거하는 데 사용됩니다. |
E 제거첫번째() | 목록에서 첫 번째 요소를 제거하고 반환합니다. |
부울 RemoveFirstOccurrence(객체 o) | 목록에서 지정된 요소의 첫 번째 항목을 제거하는 데 사용됩니다(목록을 처음부터 끝까지 탐색할 때). |
E 제거마지막() | 목록에서 마지막 요소를 제거하고 반환합니다. |
부울 RemoveLastOccurrence(객체 o) | 목록에서 지정된 요소의 마지막 항목을 제거합니다(목록을 처음부터 끝까지 탐색할 때). |
E 세트(int 인덱스, E 요소) | 목록의 지정된 위치에 있는 요소를 지정된 요소로 바꿉니다. |
객체[] toArray() | 이는 목록의 모든 요소를 적절한 순서(첫 번째 요소부터 마지막 요소까지)로 포함하는 배열을 반환하는 데 사용됩니다. |
T[] toArray(T[] a) | 이는 적절한 순서(첫 번째 요소부터 마지막 요소까지)의 모든 요소를 포함하는 배열을 반환합니다. 반환된 배열의 런타임 유형은 지정된 배열의 런타임 유형입니다. |
정수 크기() | 목록의 요소 수를 반환하는 데 사용됩니다. |
자바 LinkedList 예
import java.util.*; public class LinkedList1{ public static void main(String args[]){ LinkedList al=new LinkedList(); al.add('Ravi'); al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Output: Ravi Vijay Ravi Ajay
요소를 추가하는 Java LinkedList 예제
여기서는 요소를 추가하는 다양한 방법을 살펴보겠습니다.
import java.util.*; public class LinkedList2{ public static void main(String args[]){ LinkedList ll=new LinkedList(); System.out.println('Initial list of elements: '+ll); ll.add('Ravi'); ll.add('Vijay'); ll.add('Ajay'); System.out.println('After invoking add(E e) method: '+ll); //Adding an element at the specific position ll.add(1, 'Gaurav'); System.out.println('After invoking add(int index, E element) method: '+ll); LinkedList ll2=new LinkedList(); ll2.add('Sonoo'); ll2.add('Hanumat'); //Adding second list elements to the first list ll.addAll(ll2); System.out.println('After invoking addAll(Collection c) method: '+ll); LinkedList ll3=new LinkedList(); ll3.add('John'); ll3.add('Rahul'); //Adding second list elements to the first list at specific position ll.addAll(1, ll3); System.out.println('After invoking addAll(int index, Collection c) method: '+ll); //Adding an element at the first position ll.addFirst('Lokesh'); System.out.println('After invoking addFirst(E e) method: '+ll); //Adding an element at the last position ll.addLast('Harsh'); System.out.println('After invoking addLast(E e) method: '+ll); } }
Initial list of elements: [] After invoking add(E e) method: [Ravi, Vijay, Ajay] After invoking add(int index, E element) method: [Ravi, Gaurav, Vijay, Ajay] After invoking addAll(Collection c) method: [Ravi, Gaurav, Vijay, Ajay, Sonoo, Hanumat] After invoking addAll(int index, Collection c) method: [Ravi, John, Rahul, Gaurav, Vijay, Ajay, Sonoo, Hanumat] After invoking addFirst(E e) method: [Lokesh, Ravi, John, Rahul, Gaurav, Vijay, Ajay, Sonoo, Hanumat] After invoking addLast(E e) method: [Lokesh, Ravi, John, Rahul, Gaurav, Vijay, Ajay, Sonoo, Hanumat, Harsh]
요소를 제거하는 Java LinkedList 예제
여기서는 요소를 제거하는 다양한 방법을 볼 수 있습니다.
import java.util.*; public class LinkedList3 { public static void main(String [] args) { LinkedList ll=new LinkedList(); ll.add('Ravi'); ll.add('Vijay'); ll.add('Ajay'); ll.add('Anuj'); ll.add('Gaurav'); ll.add('Harsh'); ll.add('Virat'); ll.add('Gaurav'); ll.add('Harsh'); ll.add('Amit'); System.out.println('Initial list of elements: '+ll); //Removing specific element from arraylist ll.remove('Vijay'); System.out.println('After invoking remove(object) method: '+ll); //Removing element on the basis of specific position ll.remove(0); System.out.println('After invoking remove(index) method: '+ll); LinkedList ll2=new LinkedList(); ll2.add('Ravi'); ll2.add('Hanumat'); // Adding new elements to arraylist ll.addAll(ll2); System.out.println('Updated list : '+ll); //Removing all the new elements from arraylist ll.removeAll(ll2); System.out.println('After invoking removeAll() method: '+ll); //Removing first element from the list ll.removeFirst(); System.out.println('After invoking removeFirst() method: '+ll); //Removing first element from the list ll.removeLast(); System.out.println('After invoking removeLast() method: '+ll); //Removing first occurrence of element from the list ll.removeFirstOccurrence('Gaurav'); System.out.println('After invoking removeFirstOccurrence() method: '+ll); //Removing last occurrence of element from the list ll.removeLastOccurrence('Harsh'); System.out.println('After invoking removeLastOccurrence() method: '+ll); //Removing all the elements available in the list ll.clear(); System.out.println('After invoking clear() method: '+ll); } }
Initial list of elements: [Ravi, Vijay, Ajay, Anuj, Gaurav, Harsh, Virat, Gaurav, Harsh, Amit] After invoking remove(object) method: [Ravi, Ajay, Anuj, Gaurav, Harsh, Virat, Gaurav, Harsh, Amit] After invoking remove(index) method: [Ajay, Anuj, Gaurav, Harsh, Virat, Gaurav, Harsh, Amit] Updated list : [Ajay, Anuj, Gaurav, Harsh, Virat, Gaurav, Harsh, Amit, Ravi, Hanumat] After invoking removeAll() method: [Ajay, Anuj, Gaurav, Harsh, Virat, Gaurav, Harsh, Amit] After invoking removeFirst() method: [Gaurav, Harsh, Virat, Gaurav, Harsh, Amit] After invoking removeLast() method: [Gaurav, Harsh, Virat, Gaurav, Harsh] After invoking removeFirstOccurrence() method: [Harsh, Virat, Gaurav, Harsh] After invoking removeLastOccurrence() method: [Harsh, Virat, Gaurav] After invoking clear() method: []
요소 목록을 뒤집는 Java LinkedList 예제
import java.util.*; public class LinkedList4{ public static void main(String args[]){ LinkedList ll=new LinkedList(); ll.add('Ravi'); ll.add('Vijay'); ll.add('Ajay'); //Traversing the list of elements in reverse order Iterator i=ll.descendingIterator(); while(i.hasNext()) { System.out.println(i.next()); } } }
Output: Ajay Vijay Ravi
Java LinkedList 예: 도서
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class LinkedListExample { public static void main(String[] args) { //Creating list of Books List list=new LinkedList(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to list list.add(b1); list.add(b2); list.add(b3); //Traversing list for(Book b:list){ System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }
산출:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications & Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6