Java 컬렉션 프레임워크LinkedList 상세 정보 및 인스턴스
3279 단어 JavaLinkedList
LinkedList 정의
package java.util;
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable{
transient int size = 0;
transient Node<E> first;
transient Node<E> last;
}
LinkedList 개요LinkedList는 양방향 체인 테이블로 이루어지며 중복을 허용합니다.(아래 Node 구현) 헤더 및 끝 바늘을 유지합니다.
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
체인 시계는 용량 제한이 없지만 양방향 체인 시계 자체는 더 많은 공간을 사용했고 추가 체인 시계 바늘 조작도 필요하다.는 아래 표시된 접근 요소인 get(i)/set(i, e)에 따라 비극적인 체인 시계를 옮겨 바늘을 이동합니다. (i>수조 크기의 절반이면 끝에서 이동합니다.)
public E get(int index) {
checkElementIndex(index);
return node(index).item;
}
public E set(int index, E element) {
checkElementIndex(index);
Node<E> x = node(index);
E oldVal = x.item;
x.item = element;
return oldVal;
}
Node<E> node(int index) {
// assert isElementIndex(index);
if (index < (size >> 1)) {
Node<E> x = first;
for (int i = 0; i < index; i++)
x = x.next;
return x;
} else {
Node<E> x = last;
for (int i = size - 1; i > index; i--)
x = x.prev;
return x;
}
}
요소를 삽입하고 삭제할 때 앞뒤 노드의 바늘을 수정하면 되지만, 일부 체인 시계의 바늘을 훑어봐야 아래 표시된 위치로 이동할 수 있습니다. 체인 시계 양쪽 끝에 있는add(),addFirst(),removeLast () 또는iterator () 의remove () 를 사용하면 바늘의 이동을 줄일 수 있습니다.비스레드 보안, Collections 호출 가능.synchronizedList(new LinkedList<>());실현
LinkedList 사용 방법
예:
List<Integer> list = new LinkedList<>();
list.add(4);
list.add(2);
list.add(3);
list.add(5);
for(int i:list)
System.out.println(i);
System.out.println(list);
실행 결과:
4
2
3
5
[4, 2, 3, 5]
LinkedList는 데이터를 삽입하는 순서를 유지합니다.subList 사용
List<Integer> list = new LinkedList<>();
list.add(4);
list.add(2);
list.add(3);
list.add(5);
list.add(7);
list.add(5);
list.add(11);
list.add(14);
list.add(10);
list.add(9);
System.out.println(list);
List<Integer> list2 = list.subList(3, 6);
System.out.println(list2);
list2.set(2, 50);
System.out.println("============");
System.out.println(list);
System.out.println(list2);
실행 결과:
[4, 2, 3, 5, 7, 5, 11, 14, 10, 9]
[5, 7, 5]
============
[4, 2, 3, 5, 7, 50, 11, 14, 10, 9]
[5, 7, 50]
LinkedList의subList 방법으로 생성된 새로운list를 호출하면 내부에서 인용된 것은 원래의 체인표입니다. 만약subList의 값을 바꾸면 주list의 값도 따라서 바뀝니다.읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.