java ArrayList와 Vector의 차이점 상세 정보

1959 단어 ArrayListVector구별
Array List와 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배임을 알 수 있다.위에서 생성된 새로운 수조의 길이와 전달된 매개 변수의 길이를 비교하면 비교적 큰 것은 최종적인 새로운 길이이다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기