- Map 인터페이스
: (key,value(객체)) 쌍으로 객체들을 저장하는 객체.
📌
package chap13;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapEx1 {
public static void main(String[] args) {
String[] names = {"홍길동","김삿갓","이몽룡","임꺽정","김삿갓"};
int [] nums = {1234,4567,2350,9870,3456};
Map<String,Integer> map = new HashMap<>(); //Hash~ :순서는 모름
for(int i=0;i<names.length;i++) {
map.put(names[i], nums[i]);
}
System.out.println(map); //"김삿갓 = 4567"은 결과 도출되지 않음.
// key는 그대로,value 값만 변경됨
//value <= map.get(key)
System.out.println("김삿갓의 전화번호:"+map.get("김삿갓")); //3456
System.out.println("홍길동의 전화번호:"+map.get("홍길동")); //1234
//keySet() : key 값들을 Set으로 만들어 key값만 가지고 온다.
//map.keySet() : map 객체에서 key값들만 Set의 객체로 리턴
System.out.println("keySet() 메서드로 전체요소 조회");
Set<String> keys = map.keySet();
for(String k : keys)
System.out.println(k+":"+map.get(k));
//map.values() : map 객체에서 value값들만 조회. <- 순서도 중복도 가려주지 않음
Collection<Integer> values = map.values();
System.out.println("values() 메서드로 value값만 조회");
//개선된 for 구문으로 사용 가능
for(Integer i : values) {
System.out.println(i);
}
//map.entrySet() : map 객체에서(key,value)인 객체들을 전부 조회
System.out.println("entrySet() 메서드로 모든 요소 조회");
Set<Map.Entry<String,Integer>> entry = map.entrySet();
for(Map.Entry<String,Integer> e : entry) {
System.out.println(e.getKey()+":"+e.getValue());
}
}
}
- TreeMap 예제
: Key 객체로 정렬됨.
📌
package chap13;
import java.util.TreeMap;
public class MapEx2 {
public static void main(String[] args) {
TreeMap<Integer,String> scores = new TreeMap<>();
scores.put(87,"홍길동"); scores.put(98,"이몽룡");
scores.put(75,"임꺽정"); scores.put(94,"김삿갓");
scores.put(80,"성춘향"); scores.put(88,"향단이");
System.out.println(scores);
//순서를 가지고 있어서 일반 Map에서는 사용 불가
//Map<Integer,String> scores = new TreeMap<>(); - 오류.
System.out.println("첫번째 key :"+scores.firstKey()); //75
//Map.Entey : (key,value) 쌍인 객체의 자료형
System.out.println("첫번째 entry :"+scores.firstEntry()); //75=임꺽정
System.out.println("첫번째 entry key :"+scores.firstEntry().getKey()); //75
System.out.println("첫번째 entry value :"+scores.firstEntry().getValue()); //임꺽정
System.out.println("마지막 entry :"+scores.lastEntry()); //98=이몽룡
System.out.println("94점 아래 점수 :"+scores.lowerEntry(94)); //88=향단이
System.out.println("95점 위 점수 :"+scores.higherEntry(95)); //98=이몽룡
//floor : 근사정수
System.out.println("95점 아래 점수 95점 포함 :"+scores.floorEntry(95)); //94=김삿갓
//ceiling : 나보다 큰 근사정수
System.out.println("95점 위 점수 95점 포함 :"+scores.ceilingEntry(95)); //98=이몽룡
}
}
📌 Collection(Map) Exam4.
package chap13;
/*
* 1. 대한민국=서울,캐나다=오타와,영국=런던을 HashMap에 저장하고,
* 화면에서 나라이름을 입력받아 해당 나라의 수도를 출력하는 프로그램 구현하기
* 2. 나라이름 입력시 종료문자가 입력될 때 까지 계속 입력받기
* 3. 등록된 나라가 아니면 등록된 나라 아님으로 출력하기
* 4. 등록된 나라가 아닌경우 수도를 입력받아 등록.
* 5. 종료시 등록된 나라와 수도를 출력하기.
*/
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
public class Exam4 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("대한민국", "서울");
map.put("캐나다", "오타와");
map.put("영국", "런던");
System.out.println("나라이름을 입력하세요.(종료시:종료)");
Scanner scan = new Scanner(System.in);
while(true) {
String n = scan.next();
if(n.equals("종료")) break;
if(map.get(n) == null) { //값이 없으면 value 값으로 null을 출력해준다. 그래서 map.get(n) == null로 씀
System.out.println("등록된 나라가 아닙니다.");
System.out.println("수도를 입력하세요.");
String s = scan.next();
map.put(n,s);
} else
System.out.println(n+"의 수도: "+map.get(n));
}
System.out.println("등록된 나라와 수도");
//map.entrySet() : map 객체에서(key,value)인 객체들을 전부 조회
for(Map.Entry<String,String> e : map.entrySet())
System.out.println(e.getKey()+":"+e.getValue());
//map.keySet() 이용한 객체 전부조회
// for(String k : map.keySet()) System.out.println(k+"="+map.get(k));
}
}
'수업(국비지원) > Java' 카테고리의 다른 글
[Java] chap13 : 컬렉션 프레임워크 - Iterator 인터페이스 (0) | 2023.04.17 |
---|---|
[Java] chap13 : 컬렉션 프레임워크 - EastCard 게임 프로그램 구현 (0) | 2023.04.17 |
[Java] chap13 : 컬렉션 프레임워크 - Collection(Set, LinkedHashSet, TreeSet) (0) | 2023.04.17 |
[Java] chap13 : 컬렉션 프레임워크 - Collection(List) (0) | 2023.04.17 |
[Java] chap12: 기본 API - 기본 API Exam3. (0) | 2023.04.16 |