언어 자료구조 알고리즘/디딤돌 Java 언어 Part2 활용

[Java 언어 활용] 3.4 Vector 클래스

언제나휴일 2016. 12. 10. 11:30
반응형

[Java 언어 활용] 3.4 Vector 클래스


 

 Java 언어에서 배열은 생성할 때 크기를 결정할 수 있어야 합니다. 하지만 미리 크게 설정하면 메모리 효율을 떨어지고 작게 설정하면 충분한 개체를 보관할 수 없습니다. Vector는 확장 가능한 배열로 저장소가 꽉 차면 자동으로 저장소의 크기를 늘려주기 때문에 유연하게 사용할 수 있습니다.

 

 그리고 Vector 클래스는 Collection 인터페이스를 기반으로 구현한 List 클래스에서 파생한 클래스입니다. 따라서 Vector 클래스에는 Collection 인터페이스에 약속한 기능들을 사용할 수 있습니다. 물론 Vector 클래스에서 추가적으로 제공하는 기능들도 있습니다.

 

 먼저 Vector 클래스로 Collection 인터페이스에 약속한 기능을 사용하는 예제 코드를 살펴봅시다. 회원 개체를 추가할 때는 add 멤버 메서드를 사용합니다.

Member member =new Member(num,name);

members.add(member);

 

 보관한 회원 개체 중에 특정 번호로 검색을 할 때 먼저 보관한 개수를 구하기 위해 size 멤버 메서드를 사용합니다. 컬렉션 요소들을 순차적으로 접근할 때 for(원소 형식 변수명: 컬렉션명)을 통해 접근할 수 있습니다.

Member Find(int num){

        int cnt = members.size();              

        for(Member member : members){

               if(member.getNum() == num){

                       return member;

               }

        }

        return null;

}

 

 특정 회원을 삭제할 때는 remove 메서드를 사용합니다.

Member member = Find(num);

if(member == null){

        System.out.println("존재하지 않습니다.");

        return;

}

members.remove(member);

 

다음은 Vector를 사용하여 회원 관리 프로그램을 작성한 예입니다.

 

▷ 소스 3.4 회원 관리 프로그램 (Vector 사용)

//Member.java

//회원 클래스

public class Member {

        final int num;

        String name;

        public Member(int num, String name){

               this.num = num;

               this.name = name;

        }

        public int getNum(){

               return num;

        }

        public String toString(){

               return String.format("번호:%d 이름:%s", num,name);             

        }

}

//MemberManager.java

//회원 관리자 클래스

import java.util.Vector;

import java.util.Scanner;

public class MemberManager {

        Scanner scan = new Scanner(System.in);

        Vector<Member> members = new Vector<Member>();

        public void Run(){

               int key = 0;

               while((key = selectMenu())!=0){

                       switch(key){

                       case 1: addMember(); break;

                       case 2: removeMember(); break;

                       case 3: searchMember(); break;

                       case 4: listMember(); break;

                       default: System.out.println("잘못 선택하였습니다."); break;

                       }

               }

               System.out.println("종료합니다...");

        }

        int selectMenu(){

               System.out.println("1:추가 2:삭제 3:검색 4:목록 0:종료");

               int key = scan.nextInt();

               scan.nextLine();

               return key;

        }

        void addMember(){

               int num = 0;

               String name="";

                System.out.print("추가할 회원 번호:");

               num = scan.nextInt();

               scan.nextLine();

               System.out.print("회원 이름:");

               name = scan.nextLine();

               Member member =new Member(num,name);

               members.add(member);

               System.out.println(member.toString()+" 생성하였습니다.");       

        }

        void removeMember(){

               int num = 0;           

               System.out.print("삭제할 회원 번호:");

               num = scan.nextInt();

               scan.nextLine();

               Member member = Find(num);

               if(member == null){

                       System.out.println("존재하지 않습니다.");

                       return;

               }

               members.remove(member);

               System.out.println(member.toString()+" 삭제하였습니다.");

        }

        void searchMember(){

               int num = 0;           

               System.out.print("검색할 회원 번호:");

               num = scan.nextInt();

               scan.nextLine();

               Member member = Find(num);

               if(member == null){

                       System.out.println("존재하지 않습니다.");

                       return;

               }

               System.out.println("검색 결과>>"+member.toString());

              

        }

        void listMember(){

               System.out.println("전체 목록");

               int cnt = members.size();

               System.out.println("회원 :"+cnt);

               for(Member member : members){

                       System.out.println(member.toString());

               }

              

        }

        Member Find(int num){

               int cnt = members.size();             

               for(Member member : members){

                       if(member.getNum() == num){

                              return member;

                       }

               }

               return null;

        }

}

//Program.java

//Vector 클래스로 Collection 인터페이스 약속한 기능 사용

public class Program {

        public static void main(String[] args){

               MemberManager mm = new MemberManager();

               mm.Run();

        }

}

 

▷ 소스 3.4 실행 결과

1:추가 2:삭제 3:검색 4:목록 0:종료

1

추가할 회원 번호:3

회원 이름:홍길동

번호:3 이름:홍길동 생성하였습니다.

1:추가 2:삭제 3:검색 4:목록 0:종료

1

추가할 회원 번호:2

회원 이름:강감찬

번호:2 이름:강감찬 생성하였습니다.

1:추가 2:삭제 3:검색 4:목록 0:종료

4

전체 목록

회원 :2

번호:3 이름:홍길동

번호:2 이름:강감찬

1:추가 2:삭제 3:검색 4:목록 0:종료

3

검색할 회원 번호:2

검색 결과>>번호:2 이름:강감찬

1:추가 2:삭제 3:검색 4:목록 0:종료

2

삭제할 회원 번호:2

번호:2 이름:강감찬 삭제하였습니다.

1:추가 2:삭제 3:검색 4:목록 0:종료

4

전체 목록

회원 :1

번호:3 이름:홍길동

1:추가 2:삭제 3:검색 4:목록 0:종료

0

종료합니다...

 


[Java 언어 활용] 3.4.1 Vector를 이용하여 특정 키 순으로 보관하기

[Java 언어 활용] 3.4.2 Vector를 이용하여 인덱스로 관리하기


반응형