나라 이름과 인구를 입력하세요.(예: Korea 5000) 나라 이름, 인구 >> Korea 5000 나라 이름, 인구 >> USA 1000000 나라 이름, 인구 >> Swiss 2000 나라 이름, 인구 >> France 3000 나라 이름, 인구 >> 그만 인구 검색 >> France France의 인구는 3000 인구 검색 >> 스위스 스위스 나라는 없습니다. 인구 검색 >> 그만
package wrap;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class mapTest2 {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>();
Scanner sc = new Scanner(System.in);
System.out.println("나라 이름과 인구를 입력하세요. (예: Korea, 5000)");
while (true) {
System.out.print("나라 이름, 인구>>");
String k = sc.next();
if (k.equals("그만")) {
break;
} else {
int v;
try {
v = sc.nextInt();
} catch (Exception e) {
System.out.println("숫자가 아닙니다.");
sc.next();
continue;
}
map.put(k, v);
Set<String> ks = map.keySet();
}
}
while (true) {
System.out.print("인구 검색>>");
String ks = sc.next();
if (ks.equals("그만")) {
System.out.println("종료");
break;
} else if (map.get(ks) == null) {
System.out.println("나라가 없습니다.");
} else {
System.out.println(ks + "의 인구는 " + map.get(ks));
}
}
}
}
도시 이름, 위도, 경도 정보를 가진 Location 클래스를 작성하고, 도시 이름을 '키'로 하는 HashMap<String, Location> 컬렉션을 만들고, 사용자로부터 입력 받아 4개의 도시를 저장하라. 그리고 도시 이름으로 검색하는 프로그램을 작성하라. ---------------------------------- 도시, 경도, 위도를 입력하세요. \>> 서울, 37, 126 \>> LA, 34, -118 \>> 파리, 2, 48 \>> 시드니, 151, -33 ---------------------------------- 서울 37 126 LA 34 -118 파리 2 48 시드니 151 -33 ---------------------------------- 도시 이름 >> 피리 피리는 없습니다. 도시 이름 >> 파리 파리 2 48 도시 이름 >> 그만
기본적으로 Key-Value 로 들어감! map.put(key, value);
Map은 Collection 아니다. set의 성질도, list의 성질도 개념들이 합쳐져야 하기 때문!
map.put(23, "Marthin"); → **map.put(23, "Lee");** - 같은 키를 중복 입력하면 뒤의 것으로 키 값이 바뀐다.
입력 map.put(45, "Brown"); 출력 map.get(37); 삭제 map.remove(37);
HashMap<K, V> 클래스는 Iterable 인터페이스를 구현하지 않아서 for-each ,Iterator로 순차적 접근을 할 수 없다.
그래서 Key는 Set으로 관리! 키값을 기준으로 for-each, Iterator 사용함
public Set ks = map.keySet();
→ set 호출 메소드 / Key만 담고 있는 컬렉션 인스턴스 생성
TreeMap<Integer, String> map = new TreeMap<>(); map.put(45, "Brown"); map.put(37, "James"); map.put(23, "Martin");
package wrap;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;
public class mapTest {
public static void main(String[] args) {
HashMap<Integer, String> map = new HashMap<>();
map.put(45, "Brown");
map.put(37, "James");
map.put(23, "Martin");
Set<Integer> ks = map.keySet();
for (Integer n : ks)
System.out.print(n.toString() + '\t');
System.out.println();
for (Integer n : ks)
System.out.print(map.get(n).toString() + '\t');
System.out.println();
for (Iterator<Integer> itr = ks.iterator(); itr.hasNext();)
System.out.print(map.get(itr.next()) + '\t');
System.out.println();
System.out.println();
System.out.println("23번:" + map.get(23));
System.out.println("37번:" + map.get(37));
System.out.println("45번:" + map.get(45));
System.out.println();
map.remove(37);
System.out.println("37번:" + map.get(37));
}
}