[JAVA] HashMap으로 단어장 만들기

나옹·2022년 11월 20일
0

자바에서 데이터를 여러 개 저장하는 집합, 그룹을 의미하는 자료형은 크게 리스트형과 맵이 있다.
이중 리스트는 순서가 있으며 순서가 있다는 것은 0 1 2 3인덱스가 있다는 것이다.
대표적인 것으로는 ArrayList가 있다.
맵은 순서가 없으며 key value로 구성한다.
맵은 key값으로 value값을 가져올 수 있고, key값으로 value를 저장할 수 있다.
키값은 중복될 수 없다. (마치 리스트 자료형에서 인덱스가 유니크한것처럼)

키보드로 입력받기 때문에 Scanner를 import 해주었다.

단어추가
WordManager 클래스

private Word W=new Word();

	public void Input() {
		wordMean temp = new wordMean();
		
		System.out.println("영단어를 입력하세요");
		String a=in.nextLine();
		System.out.println("단어의 뜻을 입력하세요");
		String b=in.nextLine();
		System.out.println("단어의 중요도를 상중하로 입력하세요");
		String c=in.nextLine();
		for(;;) {
			if(c.equals("상")||c.equals("중")||c.equals("하")) {
				break;
			}else {
				System.out.println("난이도를 상 중 하로 입력하세요");
				c=in.nextLine();
			}
		}
		temp.mean=b;
		temp.level=c;
		W.input(a,temp);
	}

키보드로 영단어, 뜻, 난이도를 입력받고 Word 객체로 넘겨준다.

Word 클래스
하나의 영단어에 뜻, 난이도 모두 저장하기 위해 Word 클래스 안에 wordMean 클래스를 추가로 선언해 주었다.

class wordMean{
	String mean;
	String level;
}

그리고 맵을 전역변수로 선언해주었다.

private HashMap <String, wordMean> Word=new HashMap<>();

input 메서드


	   public void input(String a, wordMean temp) {
		      if(Word.get(a)!=null) {
		         System.out.println("중복된 단어입니다.");
		      }else {         
		         Word.put(a, temp);
		         System.out.println("입력완료");
		      }
		   }

Word.put(a, temp) 영단어는 키로 바로 저장하고 뜻과 난이도는 wordMean 객체에 저장하고 value 값에 wordMean 객체의 주소를 저장한다.

영단어의 value를 전부 출력할때는

	public void prt() {
        for (Entry<String, wordMean> entry : Word.entrySet()) {
            System.out.println
            ("[단어]:" + entry.getKey() + " [뜻]:" + entry.getValue().mean+" [난이도]:" + entry.getValue().level);

        }
        if(Word.size()==0) {
        	System.out.println("저장된 단어가 없습니다.");
        }

	}

이런식으로 getValue().변수명으로 출력해준다.

profile
최고의 개발을 위해 !

0개의 댓글