자바에서 데이터를 여러 개 저장하는 집합, 그룹을 의미하는 자료형은 크게 리스트형과 맵이 있다.
이중 리스트는 순서가 있으며 순서가 있다는 것은 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().변수명으로 출력해준다.