JAVA/code

명품 자바 프로그래밍 5장 실습문제 10번

마이구미2 2021. 4. 12. 11:10
abstract class PairMap {
	protected String keyArray[]; // key들을 저장하는 배열
	protected String valueArray[]; // value들을 저장하는 배열
	abstract String get(String key); // key 값을 가진 value 리턴. 없으면 null 리턴
	abstract void put(String key, String value); // key와 value를 쌍으로 저장. 기존에 key가 있느면, 값을 value로 수정
	abstract String delete(String key); // key 값을 가진 아이템(value와 함께) 삭제. 삭제된 value 값 리턴
	abstract int length(); // 현재 저장된 아이템의 개수 리턴
}

class Dictionary extends PairMap {
	int num;
	
	public Dictionary(int num) {
		super.keyArray = new String[num];
		super.valueArray = new String[num];
		this.num = num;
	}
	@Override
	String get(String key) {
		for(int i=0; i<num; i++) {
			if(key.equals(keyArray[i])) {
				return valueArray[i];
			}
		}
		return null;
	}
	@Override
	void put(String key, String value) {
		for(int i=0; i<num; i++) {
			if(key.equals(keyArray[i])) {
				valueArray[i] = value;
				return;
			}
		}
		keyArray[length()] = key;
		valueArray[length()] = value;
	}
	@Override
	String delete(String key) {
		for(int i=0; i<num; i++) {
			if(key.equals(keyArray[i])) {
				for(int j=0; j<num-1; j++) {
					keyArray[j] = keyArray[j+1];
					valueArray[j] = valueArray[j+1];
				}
				return valueArray[i];
			}
		}
		return null;
	}
	@Override
	int length() {
		int length = 0;
		for(int i=0; i<num; i++) {
			if(!(valueArray[i] == null)) {
				length++;
			}
		}
		return length;
	}
	
	void print() {
		for(int i=0; i<length(); i++) {
			System.out.println(keyArray[i] + " " + valueArray[i]);
		}
	}
}

public class exam10 {
	public static void main(String[] args) {
		Dictionary dic = new Dictionary(10);
		dic.put("황기태", "자바");
		dic.put("이재문", "파이선");
		dic.put("이재문", "C++");
		System.out.println("이재문의 값은 " + dic.get("이재문"));
		System.out.println("황기태의 값은 " + dic.get("황기태"));
		dic.delete("황기태");
		System.out.println("황기태의 값은 " + dic.get("황기태"));
	}
}