티스토리 뷰
728x90
반응형
Map의 형태
Map<Key, Value> (Map <K, V>)
Map 특징
Key중복 불가능, Value 중복 가능
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Map01 {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String,Integer>();
//저장 put(Key, Value)
map.put("홍길동", 12);
map.put("김길동", 30);
map.put("이길동", 20);
map.put("최길동", 10);
map.put("윤길동", 50);
map.put("오길동", 100);
System.out.println(map); // {김길동=30, 홍길동=12, 윤길동=50, 최길동=10, 이길동=20, 오길동=100}
//출력 get(Key)
System.out.println(map.get("이길동")); //해당 value값 //20
System.out.println(map.get("없는거")); //값 없음 //null
//있는지 물어보기
System.out.println(map.containsKey("이길동")); //true
System.out.println(map.containsKey("이길동1")); //false
System.out.println(map.containsValue(1000));//false
//값 지우기
System.out.println("값 지울 경우 : ");
System.out.println(map.remove("이길동"));
System.out.println(map); //{김길동=30, 홍길동=12, 윤길동=50, 최길동=10, 오길동=100}
System.out.println(map.size()); //5
map을 list로 변환하는 방법 2가지
map은 콜렉션 유형에 속하나 collection과 상속관계라고는 할수없다. 즉 엄밀히는 콜렉션이 아니다. 따라서 콜렉션인 list로 변환하려면 set을 통해야한다. set도 콜렉션지만 메소드keyset()을 통해서 map을 set으로 변환하고, set을 list으로 변환할수 있다.
또는 set에서 iterator로 변경하는 방법도 있다.
1. map -> set -> list
set<String> map2set = map.key.set(); //key값만 뽑아서 set으로 변환 //map -> set
System.out.println(map2set); //[김길동, 홍길동, 윤길동, 최길동, 오길동]
List<String> set2List = new ArrayList<string>(map2set);//set을 list로 변환
System.out.println(set2List); //[김길동, 홍길동, 윤길동, 최길동, 오길동]
2. map -> set -> iterator
: key를 알고있는 경우, get( ) 메소드로 간단하게 객체를 찾을 수 있다.
만약 전체 key의 value를 얻고 싶은 경우, iterator(반복자)를 통해 key를 하나씩 얻고 get( )메소드를 통해 값을 얻을 수 있다.
KeySet 얻기 -> iterator 얻기 -> 반복문을 통해 key얻기 -> value 얻기
Set<String> KeySet = map.KeySet(); //KeySet 얻기
Iterator<String> it = map.keyset().iterator(); //iterator 얻기
while(it.hasNext()){
String key = it.next(); //Key 얻기
Integer value = map.get(key) //value 얻기
System.out.print("K : " + key);
System.out.println(", V : " + value);
{
/*
K : 김길동V : 30
K : 홍길동V : 12
K : 윤길동V : 50
K : 최길동V : 10
K : 오길동V : 100
K : 김길동, V : 30
K : 홍길동, V : 12
K : 윤길동, V : 50
K : 최길동, V : 10
K : 오길동, V : 100
*/
728x90
반응형
'Java > JAVA' 카테고리의 다른 글
Stack - LIFO(last in first out) (0) | 2023.01.09 |
---|---|
컬렉션 프레임워크(Collection Framwork)란? (0) | 2023.01.08 |
Set (0) | 2023.01.06 |
String 문자열 (2) | 2023.01.06 |
Iterator (반복자) (0) | 2023.01.06 |
댓글
250x250
반응형
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday