1. 스택과 큐에 대하여 설명하시오.
- stack: The box one side is open and the other side is closed.
- queue: The box both sides are open.
2. Map 에 대하여 설명하시오.
- Every elements have unique keys for itself.
- An element can be called by its key.
- One element has key and value. Key is unique only one but same values can be existed.
- The value can be replaced when new element with same key is added.
3.아래의 TreeMap의 전체 Value 값을 확인 하기 위한 소스를 짜시오.
Map<Integer, String> map = new HashMap<>();
map.put(45, "Brown");
map.put(37, "James");
map.put(23, "Martin");
import java.util.*;
class Print {
private static StringBuilder print = new StringBuilder();
private static void printlnAndReset() {
System.out.println(print);
print.setLength(0);
}
static void printlnObject(Object obj) {
print.append(obj);
printlnAndReset();
}
static void printlnObject() {
printlnAndReset();
}
}
class Functions {
static void run() {
while(true) {
try {
printValuesOfMaps();
break;
} catch(Exception e) {
e.printStackTrace();
};
};
}
private static void printValuesOfMaps() {
Map<Integer, String> map = new HashMap<>();
map.put(45, "Brown");
map.put(37, "James");
map.put(23, "Martin");
printValuesFromMap(map);
Map<Integer, String> map2 = new TreeMap<>();
map2.put(45, "Brown");
map2.put(37, "James");
map2.put(23, "Martin");
printValuesFromMap(map2);
}
private static <K extends Integer, V extends String> void printValuesFromMap(Map<K, V> map) {
Iterator<K> itr = map.keySet().iterator();
while(itr.hasNext()) {
Print.printlnObject(map.get(itr.next()));
};
Print.printlnObject();
}
}
class MapMain {
public static void main(String[] args) {
Functions.run();
}
}
4. 다음을 프로그래밍 하시오.
"그만"이 입력될 때까지 나라 이름과 인구를 입력 받아 저장하고, 다시 나라 이름을 입력받아 인구를 출력하는 프로그램을 작성하라.
다음 해시맵을 이용하라.
-containsKey 라는 함수를 사용해 보셔도 좋습니다.
=================================================================================
나라 이름과 인구를 입력하세요.(예: Korea 5000)
나라 이름, 인구 >> Korea 5000
나라 이름, 인구 >> USA 1000000
나라 이름, 인구 >> Swiss 2000
나라 이름, 인구 >> France 3000
나라 이름, 인구 >> 그만
인구 검색 >> France
France의 인구는 3000
인구 검색 >> 스위스
스위스 나라는 없습니다.
인구 검색 >> 그만
import java.util.*;
class Const {
static final String STOP = "그만";
static final String COUNTRY_ERR = "countryErr";
static final int ELEMENT_SIZE = 2;
}
class Print {
private static StringBuilder print = new StringBuilder();
private static void printAndReset() {
System.out.print(print);
print.setLength(0);
}
static <T> void print(T t) {
print.append(t);
printAndReset();
}
}
class Functions {
private static Scanner scanner = new Scanner(System.in, "Cp949");
private static Map<String, Integer> map = new HashMap<String, Integer>();
static void run() {
while(true) {
try {
printPopulationFromScanner();
scanner.close();
break;
} catch(Exception e) {
e.printStackTrace();
scanner = new Scanner(System.in, "Cp949");
};
};
}
private static void printPopulationFromScanner() {
Print.print("나라 이름과 인구를 입력하세요.(예: Korea 5000)\n\n");
while(true) {
Print.print("나라 이름, 인구 >> ");
String input = scanner.nextLine();
if(input.equals(Const.STOP)) {
break;
} else {
StringTokenizer st = new StringTokenizer(input, ", ");
boolean ok = true;
String country = Const.COUNTRY_ERR;
Integer population = -1;
if (st.countTokens() >= Const.ELEMENT_SIZE) {
country = st.nextToken();
try {
population = Integer.valueOf(st.nextToken());
if (population < 0) {
ok = false;
};
} catch(NumberFormatException e) {
ok = false;
};
} else {
ok = false;
};
if (ok == false) {
Print.print("잘못 입력하셨습니다.\n");
} else {
map.put(country, population);
};
};
};
Print.print("\n\n\n");
while(true) {
Print.print("인구 검색 >> ");
String input = scanner.nextLine();
if(input.equals(Const.STOP)) {
break;
} else {
Print.print(input);
if (map.containsKey(input)) {
Print.print("의 인구는 ");
Print.print(map.get(input));
Print.print("\n");
} else {
Print.print(" 나라는 없습니다.\n");
};
};
};
}
}
class PrintPopulationMain {
public static void main(String[] args) {
Functions.run();
}
}