Java 컬렉션 프레임워크LinkedList 상세 정보 및 인스턴스

3279 단어 JavaLinkedList
Java 컬렉션 프레임워크LinkedList 상세 정보
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의 값도 따라서 바뀝니다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기