Java/study

컬렉션 프레임워크 - Map

Clearing 2022. 6. 24. 08:57
728x90

데이터를 다룰 때에는 A데이터와 B데이터를 구분하기 위한 값이 반드시 필요하다 메모리에 저장된 주소가 될 수 도있고

Map을 사용할 경우 키 값이 그 역할을 하게 된다. 기본 키(primary key)는 주  또는 프라이머리 라고 하며 데이터가 가지고 있는 고유한 값을 말한다. 고유하다는 것은 NULL값이 아니며 나만이 가지고 있는 유일한 값을 의미한다.

Map을 사용하여 데이터를 저장할 때에는 값과 키 값을 1쌍의 데이터로서 저장한다. 이로 인해 값을 찾아낼 수 있게 해주는 것이 키값이다. 

 

Map 컬렉션을 이용한 학생부 프로그램

package class07;

import java.util.HashMap;
import java.util.Random;
import java.util.Scanner;

class Student{
	String name;
	int score;
	Random random = new Random();

	Student(String name){
		this.name=name;
		this.score=random.nextInt(100)+1;
	}

	@Override
	public String toString() {
		return this.name+" "+this.score+"점";
	}

}

public class Test11 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		HashMap<Integer, Student> map = new HashMap<Integer, Student>();		
		final int PK_Start = 1001;
		final int PK_Max = 2000;
		int PK = 1001;

		while(true) {			
			System.out.println("1. 추가");
			System.out.println("2. 출력");
			System.out.println("3. 삭제");
			System.out.println("4. 종료");
			
			System.out.print("입력: ");
			int act = sc.nextInt();

			if(act==1) {
				System.out.print("추가할 학생 이름: ");
				String name = sc.next();
				map.put(PK, new Student(name));
				System.out.println(name+" 학생 입력완료"+" 학생번호 "+(PK));
				PK++;
			}
			else if(act==2) {
				if(map.isEmpty()) {
					System.out.println("출력할 정보가 없습니다.");
					continue;
				}
				for(int i=PK_Start; i<PK; i++) {
					if(map.get(i)!=null) {
					System.out.println(i+"번 "+map.get(i));
					}
				}
				System.out.print("출력할 학생번호: ");
				int num = sc.nextInt();
				if(num<PK_Start || num>PK_Max) {
					System.out.println("1000~2000사이로 입력해주세요");
					continue;
				}
				if(map.get(num)==null) {
					System.out.println("비어있는 번호 입니다.");
					continue;
				}
				System.out.println(map.get(num));
			}
			else if(act==3) {
				if(map.isEmpty()) {
					System.out.println("삭제할 정보가 없습니다.");
					continue;
				}
				for(int i=PK_Start; i<PK; i++) {
					if(map.get(i)!=null) {
					System.out.println(i+"번 "+map.get(i));
					}
				}
				System.out.print("삭제할 학생번호: ");
				int num = sc.nextInt();
				if(num<PK_Start|| num>PK_Max) {
					System.out.println("1000~2000사이로 입력해주세요");
					continue;
				}
				Student stu = map.remove(num);
				System.out.println("로그: "+stu);
				if(stu==null) {
					System.out.println("비어있는 번호입니다.");
					continue;
				}
				System.out.println(stu+" 삭제완료!");	
			}
			else if(act==4) {
				break;
			} else {
				System.out.println("잘못 입력하셨습니다.");
				System.out.println();
				continue;
			}
		}
	}
}
728x90

'Java > study' 카테고리의 다른 글

파일입출력  (0) 2022.06.27
예외(Exception)와 예외처리  (0) 2022.06.24
컬렉션 프레임워크  (0) 2022.06.23
추상클래스와 인터페이스  (0) 2022.06.22
동적 바인딩  (0) 2022.06.22