Map

jinkyung·2021년 1월 14일
0

JAVA

목록 보기
29/29

Map

: 가장 늦게 들어온 컬렉션프레임워크. 컬렉션을 상속받고 있지 않다.=독립적

하지만 자료구조에 있으므로 그렇게 불리는 것이다.

일반적으로 Key에는 스트링을 쓴다.

package com.bit.day10;

import java.util.HashMap;
import java.util.Map;

public class Ex13 {

	public static void main(String[] args) {
//Map interface   -- list의 순서를 가지면서 set처럼 순서가 없다. (set 구조와 list 구조를 동시에 가진다)
//키와 value를 통해 이루어짐 -- idx처럼 키를 호출하면 value를 얻어낼 수 있음.
//key - set type
//value - list type
//따라서 value값 중복 가능 -- 키에 의해서 서로 구별이 되니까(인덱스처럼)
//반면 key는 중복될 수 없음 -- 키가 중복된다는 것은 value를 바꾼다는 것이다.(덮어쓰기)
//제네릭을 쓰지 않으면 Object이므로 모든 것을 받을 수 있음
		
		Map<String,String> map=new HashMap<String,String>();
		map.put("key1", "val1");
		map.put("key2", "val2");
		map.put("key3", "val3");
		map.put("key4", "val4");
		map.put("key4", null);  		//null 출력 - 뺄 때 remove를 사용할 수도, null을 대입할 수도 있다.
		map.put(null, "val6");			//출력x

		System.out.println(map.get("key1"));
		System.out.println(map.get("key2"));
		System.out.println(map.get("key3"));
		System.out.println(map.get("key4"));			//val4 출력
	}
}

값 뽑아내기

package com.bit.day10;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Ex14 {

	public static void main(String[] args) {
		Map<String,Integer> map=new HashMap<String,Integer>();
		
		map.put("key1",1111);
		map.put("key1",2222);
		map.put("key1",3333);
		map.put("key1",4444);
		
		
		Set<Entry<String,Integer>> entrys = map.entrySet();		//내부클래스 - 이러한 구조로 들어있다.
		Iterator<Entry<String,Integer>> ite=entrys.iterator();
		while(ite.hasNext()){
			Entry<String,Integer> entry=ite.next();
			System.out.println("key : "+ entry.getKey()+",val :" + entry.getValue());
		}
	}
}


import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Ex14 {

	public static void main(String[] args) {
		Map<String,Integer> map=new HashMap<String,Integer>();
		
		map.put("key1",1111);
		map.put("key1",2222);
		map.put("key1",3333);
		map.put("key1",4444);

		Set<String> keys = map.keySet();		//KEY들을 set타입으로 만듦 -- map을통해서 key를 호출하여 value값을 얻을 수 있음.
		Iterator<String> ite2 = keys.iterator();	//set을 반복하기 위해
		while(ite2.hasNext()){
			System.out.println(map.get(ite2.next()));
		}


enumeration과 iterator가 작동하는 방식

: 커서가 하나 있어서 hasNext가 있으면 다음값을 계속 가리킨다.

없으면 나가버린다. 한번 밖으로 나가면 다시 들어오지 못한다.

-->다시 반복을 하고 싶으면 새롭게 enumeration or iterator 객체를 뽑아내야한다.

iterator : 벡터의 enumeration 처럼 해야겠다 해서 만든 객체 -- (다음값이 있으면 출력하는)

enumeration - 벡터에서만 활용

iterator = 컬렉션 모두 iterator 객체를 받아낼 수 있다.(벡터포함)

iterator 객체에 데이터를 카피해서 만들어내고있는 것이다. 원본은 그대로이기때문에 iterator나 enumeration은 그냥 받아서 보기위해 특별히 만들어진 객체이다. 여기에 값을 대입해봤자 바뀌지 않음!



루프문

: Set,List,배열 모두 사용가능한 루프문

단, list와 set은 제네릭이 있어야한다. for문의 타입이 제네릭에 의해서 결정되니까.

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Ex15 {

	public static void main(String[] args) {
//		List<String> arr=new ArrayList<String>();
		Set<String> arr=new HashSet<String>();
		arr.add("item1");
		arr.add("item2");
		arr.add("item3");
		arr.add("item4");
		
		//개선된 루프문
		for(String msg:arr){
			System.out.println(msg);
		}
	}
}
		String[] arr={"j","a","v","a","java"};
		//개선된 루프문
		for(String msg:arr){
			System.out.println(msg);
		}
		
//배열도 가능

0개의 댓글

관련 채용 정보