Array List와 Vector의 차이점은 무엇입니까?
두 데이터 구조 ArrayList와 Vector의 차이점은 무엇이며, 각각 어디에 사용해야 합니까?
차이점.
- 벡터는 동기화되지만 ArrayLists는 동기화되지 않습니다.
- 데이터 증가 방법
벡터를 사용하기 위한 특별한 요건이 없는 경우 ArrayLists를 사용합니다.
동기
여러 스레드가 동시에 ArrayList에 접속하는 경우 목록을 변경하는 코드 블록을 구조적으로 또는 단순히 요소를 변경하는 방식으로 외부에서 동기화해야 합니다.구조 수정이란 목록에서 요소를 추가하거나 삭제하는 것을 의미합니다.기존 요소의 값 설정은 구조 수정이 아닙니다.
Collections.synchronizedList
는 보통 목록 작성 시 목록에 대한 우발적인 비동기 액세스를 방지하기 위해 사용됩니다.
데이터의 증가
내부적으로는 ArrayList와 Vector 모두 Array를 사용하여 콘텐츠를 유지합니다.요소를 ArrayList 또는 Vector에 삽입할 때 객체의 내부 배열을 확장해야 합니다.벡터는 기본적으로 어레이 크기를 두 배로 늘리고 Array List는 어레이 크기를 50% 늘립니다.
설명서에 나와 있듯이 와 는 거의 동일합니다.다른 점은 에 대한 접근은Vector
에의 액세스는 동기화된 반면,ArrayList
그렇지 않습니다.이것은, 1개의 스레드만이, 1개의 Method 를 호출할 수 있는 것을 의미합니다.Vector
한 번에, 그리고 잠금 장치를 획득하는 데 약간의 오버헤드가 있습니다.ArrayList
그렇지 않아요.일반적으로 다음과 같은 기능을 사용하는 것이 좋습니다.ArrayList
; 싱글 소켓 케이스에서는 더 나은 선택이며 멀티 소켓 케이스에서는 잠금을 더 잘 제어할 수 있습니다.동시 읽기를 허용하시겠습니까?좋습니다. 10개의 쓰기 배치에 대해 동기화 하나를 수행하시겠습니까?그것도 괜찮네요.당신 쪽에서는 좀 더 주의를 기울여야 하지만, 아마 당신이 원하는 것일 거예요.또한 ArrayList가 있는 경우 함수를 사용하여 동기화된 목록을 작성할 수 있으며, 이를 통해 동등한 데이터를 얻을 수 있습니다.Vector
.
Vector
는, 「동기화」되고 있지만, 스레드 세이프가 아니고, 학생과 그 외의 경험이 없는 프로그래머만이 사용하고 있는 고장난 클래스입니다.
ArrayList
는 프로페셔널과 경험이 풍부한 프로그래머가 사용하는 Go-to-List 구현입니다.
스레드 세이프 리스트의 실장을 필요로 하는 프로페셔널은 를 사용합니다.
ArrayList
더 새롭고 20-30% 더 빠릅니다.
에서 명확하게 설명되는 것이 필요 없습니다.Vector
,사용하다ArrayList
Vector와 Array List에는 2가지 주요 차이점이 있습니다.
벡터는 기본적으로 동기화되지만 ArrayList는 동기화되지 않습니다.주의: ArrayList 개체를 Collections에 전달하여 ArrayList를 동기화할 수도 있습니다.synchronizedList() 메서드.동기 수단 : 여러 스레드와 함께 사용할 수 있으며 부작용은 없습니다.
Array Lists는 새로운 요소를 위한 공간이 부족할 때 이전 크기의 50%까지 확장됩니다.새로운 요소를 위한 공간이 부족할 경우 벡터는 이전 크기의 100%까지 확장됩니다.
이 밖에도 프로그래밍 작업 측면에서 이들 사이에는 몇 가지 실질적인 차이가 있습니다.
- 특정 위치의 요소를 벡터로부터 가져오려면 elementAt(int 인덱스) 함수를 사용합니다.이 함수 이름은 매우 깁니다.ArrayList에는 이를 대신하여 기억하기 쉽고 사용하기 쉬운 (int 인덱스)가 있습니다.
- 마찬가지로 기존 요소를 Vector의 새로운 요소로 대체하기 위해 setElementAt() 메서드를 사용합니다.이 메서드는 다시 매우 길고 프로그래머가 반복적으로 사용하는 데 자극을 줄 수 있습니다.이 ArrayList 대신 사용하기 쉽고 기억하기 쉬운 add(int index, object) 메서드가 있습니다.이와 같이 Array List에는 프로그래머 친화적이고 사용하기 쉬운 함수 이름이 있습니다.
어떤 걸 언제 쓸까요?
- 벡터를 완전히 사용하지 않도록 하십시오.Array Lists는 벡터가 할 수 있는 모든 것을 할 수 있습니다.Array Lists에 대한 자세한 내용은 기본적으로 동기화되지 않습니다.필요에 따라 Collections util 클래스를 사용하여 언제든지 동기화할 수 있습니다.
- Array List는 함수 이름을 쉽게 기억하고 사용할 수 있습니다.
주의: 어레이 목록이 100% 증가하더라도 초기 단계에서 충분한 메모리를 할당하는 capacity() 메서드를 통해 이를 피할 수 있습니다.
도움이 됐으면 좋겠다.
ArrayList
그리고.Vector
둘 다 리스트인터페이스를 실장하고 삽입 순서를 유지합니다.하지만 그 사이에 많은 차이점이 있다.ArrayList
그리고.Vector
수업...
어레이 리스트 -
ArrayList
동기화되지 않았습니다.ArrayList
요소 수가 용량에서 초과되면 현재 어레이 크기의 50%가 증가합니다.ArrayList
는 레거시 클래스가 아닙니다.JDK 1.2에서 도입되었습니다.ArrayList
비동기화이기 때문에 고속입니다.ArrayList
는 반복기 인터페이스를 사용하여 요소를 통과합니다.
벡터 -
Vector
동기화되어 있습니다.Vector
increments 100%는 요소의 총 수가 용량보다 클 경우 어레이 크기가 두 배로 증가함을 의미합니다.Vector
는 레거시 클래스입니다.Vector
는 동기화되어 있기 때문에 속도가 느립니다.즉, 멀티스레딩 환경에서는 현재 스레드가 오브젝트의 잠금을 해제할 때까지 다른 스레드를 실행 가능 또는 실행 불가능 상태로 유지합니다.Vector
는 Enumeration 인터페이스를 사용하여 요소를 통과합니다.하지만 반복기를 사용할 수도 있습니다.
참고 항목 : https://www.javatpoint.com/difference-between-arraylist-and-vector
기본적으로 ArrayList와 Vector는 모두 내부 객체 어레이를 사용합니다.
어레이 리스트:ArrayList 클래스는 AbstractList를 확장하고 List 인터페이스와 RandomAccess(마커 인터페이스)를 구현합니다.Array List는 필요에 따라 확장할 수 있는 동적 어레이를 지원합니다.요소들에 대한 첫 번째 반복을 제공합니다.ArrayList는 내부 객체 배열을 사용합니다.기본 초기 크기는 10입니다.이 크기를 초과하면 수집이 기본 크기인 15의 절반으로 자동으로 증가합니다.
벡터: 벡터는 ArrayList와 비슷하지만 다른 점은 동기화되어 기본 초기 크기가 10이며 크기가 원래 크기의 2배까지 증가하면 새 크기가 20이 된다는 것입니다.벡터는 ArrayList 이외의 클래스에서 랜덤액세스를 구현하는 유일한 클래스입니다.Vector는 그 중 4개의 컨스트럭터를 가지고 있습니다.Vector (int initial Capacity, int capacity)증가) 용량인크리먼트는 벡터가 오버플로우할 때 용량이 증가하여 부하 계수를 더 잘 제어할 수 있는 양입니다.
다른 차이점으로는 다음과 같습니다.
언급URL : https://stackoverflow.com/questions/2986296/what-are-the-differences-between-arraylist-and-vector
'programing' 카테고리의 다른 글
어레이 자동 갱신에 Dynamite Vue 컴포넌트가 필요한 이유 (0) | 2022.07.03 |
---|---|
axios(vue.js)에서 다이내믹 인증 헤더를 사용하는 방법 (0) | 2022.07.03 |
Java 문자열의 날짜 형식 변경 (0) | 2022.07.03 |
하위 구성 요소가 어떤 구성 요소에서 호출되는지 어떻게 알 수 있습니까? (0) | 2022.07.03 |
Vuex 작업에 여러 매개 변수 전달 (0) | 2022.07.03 |