Vector 클래스는 객체의 가변장 배열을 구현합니다. 여기에는 배열과 같이, 정수 인덱스를 사용해 액세스 할 수 있는 요소가 포함되고 있습니다. 그러나, Vector 사이즈는 작성 후에 추가 및 삭제된 객체를 포함할 수 있도록 필요에 따라서 늘리거나 줄이거나 할 수 있습니다 .

각 Vector는 capacity (용량)와 capacityIncrement (증가량)를 관리하는 것으로써 기억 관리를 최적화하려고 합니다. capacity는 항상 Vector 요소수에 가까운 값이며, 일반적으로 요소수부터 커집니다. 이것은 Vector에 요소가 더해질 때, Vector 기억 영역은 capacityIncrement 만 늘려지기 때문입니다. 많은 요소를 삽입하기 전에 어플리케이션으로 용량을 필요한 값으로 설정해 두면, 메모리의 재배분의 회수를 줄일 수가 있습니다.

Java 2 플랫폼 v1. 2 에서는 이 클래스는 List를 구현하기 위해서 개량되고 있기 때문에 Java Collections Framework 일부가 됩니다. 새로운 컬렉션의 구현과는 달라, Vector는 동기를 잡습니다.

Vector 메서드 Iterator 및 listIterator가 돌려주는 Iterator는 「페이르파스트」입니다. Iterator 작성 후에 Iterator 자체의 remove 또는 add 메서드 이외 방법으로 Vector를 구조적으로 변경하면, Iterator는 ConcurrentModificationException을 Throw 합니다. 따라서, 동시에 변경을 하면, Iterator는 장래의 예측할 수 없는 시점에 있어 예측할 수 없는 동작이 발생하는 위험을 회피하기 위해서 즉시 한편 솜씨 자주 예외를 Throw 합니다. Vector elements 메서드가 돌려주는 Enumeration는 페이르파스트가 아닙니다.

보통, 비동기의 동시 변경이 있는 경우, 확실한 보증을 실시하는 것은 불가능해서, 반복자의 페이르파스트의 동작을 보증할 수 없습니다. 페이르파스트 반복자는 최선 노력 원칙에 기반해 ConcurrentModificationException을 Throw 합니다. 따라서, 정확을 기하기 위해서 이 예외에 존하는 프로그램을 쓰는 것은 잘못입니다. 「반복자의 페이르파스트의 동작은 버그를 검출하기 위해서 마셔 사용해야 합니다」

이 클래스는 Java Collections Framework 멤버입니다.

'old > Data Structure & Algorithm' 카테고리의 다른 글

Hash Table  (0) 2010.02.24
Posted by jazzlife
,