java ArrayList와 Vector의 차이점 상세 정보
동일점:
1. ArrayList와 Vector는 모두 같은 부류를 계승하고 같은 인터페이스를 실현한다
2. 밑바닥은 모두 수조로 이루어진다
3. 초기 기본 길이는 10입니다.
차이점:
1. 동기화:
Vector의public 방법은 대부분synchronized 키워드를 추가하여 방법의 동기화를 확보합니다. 즉, Vector 라인이 안전하고 ArrayList 라인이 안전하지 않습니다.
2. 확장이 다르다
내부 속성이 다르기 때문에 확장 방식이 다른 원인이 될 수 있다.
ArrayList에는 두 가지 속성이 있습니다. 데이터를 저장하는 그룹 요소 데이터와 기록 수량을 저장하는size입니다.
Vector에는 세 가지 속성이 있습니다. 데이터를 저장하는 그룹 요소 데이터, 기록 수를 저장하는 요소 Count, 그리고 확장 그룹 크기의 확장 인자capacity Increment가 있습니다.
ArrayList 확장 방법
//jdk1.8.0_91
private void grow(int minCapacity) {
// overflow-conscious code
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
이를 통해 알 수 있듯이 확장 조건을 충족시킬 때 확장 후 수조의 크기가 원수조의 길이의 1.5배와 전달 매개 변수 중 비교적 큰Vector 확장 방법
//jdk1.8.0_91
private void grow(int minCapacity) {
// overflow-conscious code
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
capacityIncrement : oldCapacity);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
elementData = Arrays.copyOf(elementData, newCapacity);
}
확장 인자가 0보다 크면 새 수조의 길이는 원수조의 길이+확장 인자이고, 그렇지 않으면 하위 새 수조의 길이는 원수조의 길이의 2배임을 알 수 있다.위에서 생성된 새로운 수조의 길이와 전달된 매개 변수의 길이를 비교하면 비교적 큰 것은 최종적인 새로운 길이이다.읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
👩🎓공부-자바 ArrayList상속은 약 두세달 전에 배우던 거고, 지금 제네릭 컬렉션을 공부하고 있는데 과제 코드 짤겸 해서 제가 푼 풀이를 벨로그에 올려둘까 합니다. 더 미루지말고 공부한거 재깍재깍 올려야죠 ^^ 기존에 배열은 문제점이 두가지...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.