반응형
4. Map
- key-value 형태로 데이터를 저장하기 때문에 기존에 순번으로만 조회하던 방식에서, key 값을 기준으로 vlaue를 조회할 수 있다. ( LinkedHashMap 으로 생성하면 순서 보장)
- key 값 단위로 중복을 허용하지 않는다.
- Map 은 그냥 Map으로 쓸 수도 있지만 HashMap, TreeMap 등으로 응용하여 사용할 수 있다.
|
이외
|
// Map
import java.util.Map; // Map 쓰고 엔터 치면 자동 생성
public class Main {
public static void main(String[] args) {
Map<String, Integer> intMap = new HashMap<>(); // 선언 및 생성
// 키 , 값
intMap.put("일", 11);
intMap.put("이", 12);
intMap.put("삼", 13);
intMap.put("삼", 14); // 중복 Key값은 덮어씁니다.
intMap.put("삼", 15); // 중복 Key값은 덮어씁니다.
// key 값 전체 출력
for (String key : intMap.keySet()) {
System.out.println(key); // 일,이,삼 출력
}
// value 값 전체 출력
for (Integer key : intMap.values()) {
System.out.println(key); // 11,12,15 출력
}
// get()
System.out.println(intMap.get("삼")); // 15 출력
}
}
예제 : 자료구조 요리 레시피 메모장 만들기
입력값
-저장할 자료구조명 입력
-요리 제목 입력
-한 문장씩 레시피 입력
-입력을 마쳤으면 마지막에 "끝" 문자 입력
package week02.collection;
import java.util.*;
public class col08 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
List<String> list = new LinkedList<>();
Set<String> set = new LinkedHashSet<>();
Map<Integer, String> map = new LinkedHashMap<>();
String collection = "";
// 정상적인 값(list, set, map)을 입력하기 전까지 반복문을 탈출할 수 없다.
while(true){
System.out.print("저장할 자료구조명을 입력 : ");
String str = input.nextLine();
if ("list".equalsIgnoreCase(str) || "set".equalsIgnoreCase(str) || "map".equalsIgnoreCase(str)) {
// 정상적인 값을 while문 밖에 전달
collection = str;
break;
} else {
System.out.println("자료구조명을 다시 입력해주세요.");
}
}
System.out.print("내가 좋아하는 요리 제목 입력 : ");
String cook = input.nextLine();
// 소문자로 치환 후 비교
switch (collection.toLowerCase()) {
case "list" :
System.out.print("레시피 입력(그만두고 싶으면 끝 입력) : ");
// 끝 입력하기 전까지 무한반복
while (true) {
String str = input.nextLine();
if ("끝".equals(str)) {
break;
} else {
list.add(str);
}
}
// 제목 출력
System.out.println("[ " + collection + " 으로 저장된 " + cook + " 만들기 ]");
int i = 1;
for (String s : list) {
System.out.println(i + ". " + s);
i++;
}
break;
case "set" :
System.out.print("레시피 입력(그만두고 싶으면 끝 입력) : ");
// 끝 입력하기 전까지 무한반복
while (true) {
String str = input.nextLine();
if ("끝".equals(str)) {
break;
} else {
set.add(str);
}
}
// 제목 출력
System.out.println("[ " + collection + " 으로 저장된 " + cook + " 만들기 ]");
// Set은 인덱스를 활용하여 값을 꺼낼 수 없기 때문에 향상된 포문을 활용한다.
int j = 1;
for (String s : set) {
System.out.println(j + ". " + s);
j++;
}
break;
case "map" :
System.out.print("레시피 입력(그만두고 싶으면 끝 입력) : ");
// 끝 입력하기 전까지 무한반복
int k = 1;
while (true) {
String str = input.nextLine();
if ("끝".equals(str)) {
break;
} else {
map.put(k,str);
k++;
}
}
// 제목 출력
System.out.println("[ " + collection + " 으로 저장된 " + cook + " 만들기 ]");
// Map에 저장된 밸류들을 하나씩 꺼내서 순서대로 레시피 출력(LinkedHashMap일 경우에 순서가 보장되기 때문에 해당 방법 사용 가능)
int l = 1;
for (String value : map.values()) {
System.out.println(l + ". " + value);
l++;
}
break;
}
}
}
반응형
'공부' 카테고리의 다른 글
[Spring] Request/Response (0) | 2024.05.16 |
---|---|
상속 (0) | 2024.05.13 |
Java 컬렉션 (3) : Set (0) | 2024.04.26 |
Java 컬렉션 (2) : Queue (1) | 2024.04.26 |
Java 컬렉션 (1) : List (4) | 2024.04.26 |