본문 바로가기

Mini Project

hashmap(해쉬맵)을 이용해서 검색 만들기(key 값 받아 value값 출력하기)

미니프로젝트 진행 중에 hashmap을 사용하여 데이터를 가져오고 출력하게 되었다.

세부 기능을 구현 중에 검색을 만들게 되었다! (개인적으로 추가한 기능, 코드 변수명이 조금 이기적일 수 있다..)

사용자에게 입력을 받은 문자열을 해쉬맵 key 값에 있는지 조건문으로 검사한 뒤 있으면 value 값까지 출력 하는 형태이다!

public static void main(String[] args) {
		OpeningSubjectDataset.searchSubjectData();
		Iterator<String> keys = OpeningSubjectDataset.sSubjectList.keySet().iterator();
		System.out.println("강의 명을 검색하세요. :");
		String str = "";
		str = sc.nextLine();
	    OpeningSubjectVO VO1 = OpeningSubjectDataset.sSubjectList.get(str);
	    
	    if(OpeningSubjectDataset.sSubjectList.containsKey(str)) {
	    	
	    	System.out.println("\n[ 수강내역 ]\n");
		    System.out.println("교과구분 \t\t 과목코드 \t\t 과목명 \t\t 이수학점 \t\t 강의교시 \t\t 교수이름");
		    System.out.println("---------------------------------------------------------------------------------------------------");

	    	System.out.printf("%-10s\t %10s\t %15s\t %10d\t %20s\t %10s\n", VO1.getSubCurriculum(), VO1.getSubCode(),
	    	VO1.getSubName(), VO1. getSubCredit(), VO1.getSubTime(), VO1.getProfessorVO().getProfessorName());
	    }else {
	    	System.out.println("검색하신 강의가 없습니다.");
	    }

	}
public class OpeningSubjectDataset {

	public static HashMap<String, OpeningSubjectVO> sSubjectList = new  HashMap<String, OpeningSubjectVO>();
		
	}
	public static void searchSubjectData() {
			sSubjectList.put("소프트웨어공학론", new OpeningSubjectVO(10, "소프트웨어공학론", "전필", "목 1,2,3", 1, 3, 3, 1000, 30, 30));
			sSubjectList.put("산업공학론", new OpeningSubjectVO(11, "산업공학론", "전필", "금 1,2,3", 2, 2, 3, 2000, 30, 25));
			sSubjectList.put("화학실험", new OpeningSubjectVO(12, "화학실험", "교필", "월 1,2,3", 5, 4, 3, 5000, 20, 0));
			sSubjectList.put("세포생물학", new OpeningSubjectVO(13, "세포생물학", "전필", "화 1,2,3", 4, 2, 3, 4000, 25, 3));
			sSubjectList.put("심리학개론", new OpeningSubjectVO(14, "심리학개론", "교필", "수 1,2,3", 3, 1, 3, 3000, 50, 0));
	}
}
public class OpeningSubjectVO {

	private int subCode;
	private String subName;
	private String subCurriculum;
	private DepartmentVO majorVO;
	private int subGrade;
	private int subCredit;
	private ProfessorVO professorVO;
	private int subMaxNum;
	private int subNowNum;
	private String subTime;
	
	public OpeningSubjectVO(int subCode, String subName, String subCurriculum, String subTime, int majorCode, 
			int subGrade, int subCredit, int profId, int subMaxNum, int subNowNum) {
		super();
		DepartmentDataset.departmentData();	// 학과데이터 삽입
		ProfessorDataset.professorData();	// 교수데이터 삽입
		
		this.subCode = subCode;
		this.subName = subName;
		this.subCurriculum = subCurriculum;
		this.subGrade = subGrade;
		this.subCredit = subCredit;
		this.subMaxNum = subMaxNum;
		this.subNowNum = subNowNum;
		this.majorVO = DepartmentDataset.departmentList.get(majorCode);
		this.professorVO = ProfessorDataset.professorList.get(profId);
		this.subTime = subTime;
		}
    }