태그: ArrayList 클래스

Java 언어에서는 순차 리스트를 구현한 ArrayList 클래스를 제공하고 있습니다. ArrayList는 내부 저장소가 배열처럼 연속적인 메모리 형태입니다. 그리고 저장소의 크기를 변화할 수 있다는 특징이 있습니다. 이러한 점은 앞에서 다룬 Vector 클래스와 차이가 없습니다.

 

실제 Vector 클래스와 ArrayList 클래스는 거의 모든 부분에서 비슷합니다. 차이가 있는 부분은 동기화를 할 수 있는가 여부입니다. 여기서 얘기하는 동기화란 여러 개의 스레드에서 공유 자원을 경쟁하여 사용할 때 개발자가 임계 영역에 진입하고 나가는 것을 제어하여 자원 경쟁 문제에서의 교착 상태 발생등을 방지하는 것을 말합니다.

 

따라서 멀티 스레드를 이용하여 비동기 프로그래밍을 한다고 할 때 컬렉션을 여러 스레드에서 경쟁해서 사용한다면 Vector 클래스를 사용하시기 바랍니다. 그렇지 않다면 어느 것을 사용해도 무방합니다. ArrayList의 속도가 다소 빠르다고 하지만 큰 의미를 갖는 정도는 아닙니다.

 

다음은 3.4에서 다루었던 소스 3.4에서 Vector 개체를 생성하는 부분만 ArrayList로 변경한 코드입니다. 다른 부분에 코드를 변경하지 않아도 잘 동작하는 것을 알 수 있습니다.

 

▷ 소스 3.8 ArrayList를 이용한 회원 관리 프로그램

▷ 소스 3.8 실행 결과