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 |