컬렉션 프레임워크 실습 { 컬렉션 프레임워크란?, Collection 인터페이스 - List 인터페이스 - ArrayList 클래스, 배열의 용량 }
Ben의 프로그램2023. 7. 20. 10:13
728x90
컬렉션 프레임워크 전체적인 구조 짧게 복습하기
프로그램을 개발할 때는 자료를 어떤 구조로 관리할 것인지가 중요합니다. 그래야 프로그램의 기능을 효과적으로 구현할 수 있기 때문입니다. 이때 사용하는 것이 자료 구조(data structure)입니다. 자료 구조는 프로그램 실행 중 메모리에 자료를 유지 및 관리하기 위해 사용하는데요. 자바에서는 필요한 자료 구조를 미리 구현하여 java.util 패키지에서 제공하고 있는데, 이를 컬렉션 프레임워크(collection framework)라고 합니다. Collection 인터페이스 하위에는 List 인터페이스와 Set 인터페이스가 있습니다. List 인터페이스를 구현한 클래스는 순차적인 자료를 관리하는 데 사용하는 클래스이고, Set 인터페이스는 우리가 수학시간에 배운 집합을 생각하면 됩니다. Map 인터페이스는 하나가 아닌 쌍으로 되어 있는 자료를 관리하는 메서드들이 선언되어 있습니다.
실습 계획
간단한 회원 관리 프로그램을 만들면서 컬렉션 프레임워크에서 제공하는 각 클래스를 실습해 보겠습니다. 회원 관리 프로그램에서 회원 추가, 회원 삭제, 전체 회원 정보 출력 기능을 구현합니다.
Member 클래스 구현
collection 패키지 하위에 프로그램 전반에서 공통으로 사용할 '회원'을 나타내는 Member 클래스를 만들어 보겠습니다. 멤버 변수는 private 변수로 선언하고 getter 와 setter 를 제공합니다. 나중에 회원 정보를 출력하기 위해 toString( ) 메서드를 재정의했습니다.
List 인터페이스
List 인터페이스에는 객체를 순서에 따라 저장하고 유지하는 데 필요한 메서드가 선언되어 있습니다. 우리가 알고 있는 순차 자료 구조의 대표적인 예시는 배열입니다. 자바에서 배열을 구현한 대표 클래스로는 ArrayList, Vector 가 있고, 배열과 구현 방식은 다르지만 순차 자료 구조를 구현한 LinkedList 가 있습니다. 우선 객체 배열로 가장 많이 사용하고 기존 예제에서도 자주 활용했던 ArrayList 부터 자세히 살펴보겠습니다.
ArrayList 클래스
ArrayList 는 그동안 다른 예제에서도 사용했었습니다. 객체 배열을 구현한 클래스이며 Collection 인터페이스와 그 하위 List 인터페이스를 구현하였습니다. 객체 순서를 기반으로 순차적으로 자료를 관리하는 프로그램을 구현할 때 사용합니다.
ArrayList 클래스 실습
collection 패키지 하위에 arraylist 패키지를 만들고 MemberArrayList.java 클래스를 생성하면 패키지의 계층 구조가 아래와 같이 보입니다. 공통으로 사용할 Member 클래스는 collection 패키지 하위에 있고, MemberArrayList 클래스를 활용할 관리 클래스는 collection.arraylist 패키지에 만들었습니다.
[ MemberArrayList 클래스 : ArrayList 를 활용해 회원 관리 프로그램 구현하기 ] ArrayList 를 활용한 MemberArrayList 클래스에서는 3가지 메서드를 제공합니다. 회원을 추가하는 addMember( ) 메서드, 회원을 삭제하는 removeMember( ) 메서드, 회원 전체를 출력하는 showAllMember( ) 메서드입니다. [ MemberArrayListTest 클래스 : MemberArrayList 의 테스트 클래스 ] 이렇게 만든 클래스를 활용하여 회원을 추가하고 삭제하며 프로그램이 잘 구현되었는지 확인해 보겠습니다. collection.arraylist 패키지 하위에 MemberArrayListTest 클래스를 생성합니다.
출력화면을 보겠습니다.
성공적으로 멤버를 추가하고 삭제하는 것을 볼 수 있습니다.
배열의 용량
ArrayList list = new ArrayList( )와 같이 생성자를 호출할 때 ArrayList 가 생성되는 과정을 살펴보겠습니다. ArrayList.java 파일을 살펴보면 객체 배열로 사용할 object 배열과 default_capacity 가 정의되어 있는 것을 볼 수 있습니다. 즉 ArrayList( ) 디폴트 생성자를 호출하여 배열 크기를 지정하지 않으면 크기가 10개짜리 배열이 기본으로 만들어집니다. 이를 배열 용량이라고 합니다. ArrayList(int) 생성자를 사용하면 초기에 생성할 배열의 용량을 지정할 수도 있습니다. ArrayList 에 요소를 추가하다보면 처음 생성한 용량이 부족해질 수도 있습니다. ArrayList 는 용량이 부족해지면 큰 용량의 배열을 새로 만들고 기존 항목을 복사하는 방식으로 동작합니다.