Java에서 Vector와 ArrayList의 차이점 자세히 보기
세 가지 구체적인 실현 클래스의 관련 차이점은 다음과 같다.
1. ArrayList는 가장 자주 사용하는 List 구현 클래스로 내부는 수조를 통해 이루어지며 요소에 대한 빠른 무작위 접근을 허용한다.수조의 단점은 모든 요소 사이에 간격이 있어서는 안 된다는 것이다. 수조의 크기가 만족스럽지 않을 때 저장 능력을 증가시켜야 한다. 이미 수조의 데이터가 새로운 저장 공간에 복제되었다고 해야 한다.ArrayList의 중간 위치에서 요소를 삽입하거나 삭제할 때 그룹을 복사, 이동, 대가가 비교적 높다.따라서 무작위 검색과 반복에 적합하고 삽입과 삭제에 적합하지 않다.
2. Vector는 Array List와 마찬가지로 수조를 통해 이루어진다. 다른 것은 스레드의 동기화를 지원한다. 즉, 어느 순간에 하나의 스레드만 Vector를 쓸 수 있고 다중 스레드를 동시에 써서 발생하는 불일치성을 피하지만 동기화를 실현하는 데 많은 비용이 들기 때문에 Array List에 접근하는 것보다 느리다.
3. LinkedList는 체인 테이블 구조로 데이터를 저장하기 때문에 데이터의 동적 삽입과 삭제에 적합하고 무작위 접근과 반복 속도가 비교적 느리다.또한 List 인터페이스에 정의된 방법이 없어 헤더와 꼬리 요소를 조작하는 데 사용되며 창고, 대기열, 양방향 대기열로 사용할 수 있다.
자바 소스 코드를 보면 그룹의 크기가 부족할 때 그룹을 다시 만들고 요소를 새 그룹에 복사해야 합니다. Array List와 Vector의 확장 그룹의 크기가 다릅니다.
ArrayList:
public boolean add(E e) {
ensureCapacity(size + 1); // , 。
elementData[size++] = e;
return true;
}
public void ensureCapacity(int minCapacity) {
modCount++;
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
Object oldData[] = elementData; // ,
int newCapacity = (oldCapacity * 3)/2 + 1; //
if (newCapacity < minCapacity)
newCapacity = minCapacity;
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
}
Vector:
private void ensureCapacityHelper(int minCapacity) {
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
Object[] oldData = elementData;
int newCapacity = (capacityIncrement > 0) ?
(oldCapacity + capacityIncrement) : (oldCapacity * 2);
if (newCapacity < minCapacity) {
newCapacity = minCapacity;
}
elementData = Arrays.copyOf(elementData, newCapacity);
}
}
ArrayList와 Vector의 차이점은 다음과 같습니다.ArrayList는 메모리가 부족할 때 기본적으로 50% + 1개, Vector는 기본적으로 1배 확장됩니다.
Vector는 indexOf(obj,start) 인터페이스를 제공합니다. ArrayList는 없습니다.
Vector는 스레드 보안 수준에 속하지만 대부분의 경우 Vector를 사용하지 않습니다. 왜냐하면 스레드 안전은 더 큰 시스템 비용이 필요하기 때문입니다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.