>  기사  >  Java  >  Java 인터뷰에서 Arraylist와 Linkedlist의 차이점

Java 인터뷰에서 Arraylist와 Linkedlist의 차이점

王林
王林앞으로
2020-12-24 10:12:144735검색

Java 인터뷰에서 Arraylist와 Linkedlist의 차이점

먼저 Arraylist에 대한 지식을 소개하겠습니다.

(학습 영상 공유: java 교육 영상)

Arraylist: 맨 아래 레이어는 동적 배열을 기반으로 하며, 다음 표에 따르면 배열 요소에 대한 임의 액세스는 다음과 같습니다. 배열의 끝으로 갈수록 효율적입니다.

하지만 배열의 데이터를 삭제하고 배열의 중간에 데이터를 추가하는 것은 배열을 이동해야 하기 때문에 비효율적입니다. 예를 들어, 최악의 시나리오는 첫 번째 배열 요소를 삭제하는 것입니다. 이를 위해서는 두 번째 배열 요소를 n번째 배열 요소로 각각 1비트 앞으로 이동해야 합니다. 동적 배열이라고 부르는 이유는 배열 요소가 용량을 초과하면 Arraylist를 확장할 수 있기 때문입니다. (JDK1.8의 경우 확장 후 배열 용량은 확장 전의 1.5배입니다.) Arraylist에서 가장 큰 배열 용량입니다. 소스 코드는 정수 .MAX_VALUE-8입니다. 비어 있는 8비트에 대한 현재 설명은 다음과 같습니다.

①스토리지 헤더워드;

②일부 시스템 메모리 오버플로를 방지하고 오류 가능성을 줄여 할당량을 줄입니다. Integer.MAX_VALUE를 지원합니다(Integer.MAX_VALUE-8이 여전히 수요를 충족할 수 없는 경우).

다음은 Arraylist 소스 코드의 일부입니다: Arraylist 확장:

Java 인터뷰에서 Arraylist와 Linkedlist의 차이점 (공유할 추가 인터뷰 질문:

java 인터뷰 질문 및 답변

) Arraylist에 데이터 추가: (끝에 추가 array)

Java 인터뷰에서 Arraylist와 Linkedlist의 차이점Add data to the array 지정된 위치에 배열을 추가합니다:

Java 인터뷰에서 Arraylist와 Linkedlist의 차이점 ArrayList의 현재 용량이 충분히 크면 add() 작업이 매우 효율적이라는 것을 알 수 있습니다. 배열의 지정된 위치에 데이터를 추가하면 많은 수의 배열 이동 복사 작업이 수행됩니다. 배열이 복사되면 결국 System.arraycopy() 메서드가 호출되므로 add() 작업의 효율성은 여전히 ​​상당히 높습니다. 그럼에도 불구하고 지정된 위치에 데이터를 추가할 때 데이터를 추가하기 위해 포인터만 변경하면 되는 Linkedlist보다 여전히 속도가 느립니다. Arraylist에서 배열을 삭제하려면 배열을 이동해야 하므로 속도가 느려집니다.

Linkedlist는 연결된 목록을 기반으로 하는 동적 배열입니다. 데이터 추가 및 삭제는 효율적이며 포인터 지정만 변경하면 됩니다. 그러나 데이터 액세스의 평균 효율성이 낮고 연결된 목록을 순회해야 합니다. Arraylist 데이터 소스 코드 가져오기: (첨자 액세스에 따라, 고효율)

Java 인터뷰에서 Arraylist와 Linkedlist의 차이점 Linkedlist 액세스 데이터 소스 코드: (node() 함수가 연결된 목록을 트래버스함)

Java 인터뷰에서 Arraylist와 Linkedlist의 차이점

Java 인터뷰에서 Arraylist와 Linkedlist의 차이점요약:

1. 무작위의 경우 get 및 set에 액세스할 때 LinkedList에는 포인터 이동이 필요하므로 ArrayList가 LinkedList보다 낫습니다.

새 작업과 삭제 작업 추가 및 제거의 경우 ArrayList가 데이터를 이동해야 하기 때문에 LinedList가 유리합니다. ​​​​​​​

2. 각 효율성 문제:

Java 인터뷰에서 Arraylist와 Linkedlist의 차이점관련 권장 사항:

java 입문 튜토리얼

위 내용은 Java 인터뷰에서 Arraylist와 Linkedlist의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제