유디의 공간정보·개발일기

7-2. 0713_ Hashmap 본문

JAVA

7-2. 0713_ Hashmap

55yudi 2021. 10. 24. 21:42

- House class 에 Dog와 Cat 의 ArrayList를 각각 만들고 dogs =, cats = 초기값을 줌

 

[House]

package com.lx.animal;

import java.util.ArrayList;

public class House {
	
	public ArrayList<Dog> dogs = new ArrayList<Dog>();
	public ArrayList<Cat> cats = new ArrayList<Cat>();

}

 

[Cat]

package com.lx.animal;

public class Cat {
	
	public String name;

	public Cat() {
		
	}
	
	public Cat(String name) {
		this.name = name;
	}
}

 

[Test1]

package com.lx;

import java.util.ArrayList;
import java.util.HashMap;

import com.lx.animal.Cat;
import com.lx.animal.Dog;
import com.lx.animal.House;

public class Test1 {

	public static void main(String[] args) {
		
		House house1 = new House();
		Dog dog1 = new Dog();
		house1.dogs.add(dog1);
		
		System.out.println("집 안에 있는 강아지 수 : " + house1.dogs.size());
		
		
		Cat cat1 = new Cat("냥이1");
		house1.cats.add(cat1);
		house1.cats.add(new Cat("냥이2")); //line21과 같은 것
		
		System.out.println("집 안에 있는 고양이 수 : " + house1.cats.size());
		
	
		Cat outCat = house1.cats.get(house1.cats.size()-1);
		System.out.println(" : " + outCat.name);
        
		//Map 사용하기
		HashMap<String, String> map1 = new HashMap<String, String>();
		map1.put("사람1", "홍길동1");
		map1.put("사람2", "홍길동2");
		map1.put("사람3", "홍길동3");
		
		String outName = map1.get("사람2");
		System.out.println("사람2의 이름 : " + outName);
		
		//(응용)
		HashMap<String, ArrayList> map2 = new HashMap<String, ArrayList>();
		map2.put("강아지", house1.dogs);
		map2.put("고양이", house1.cats);
		
		Cat outCat2 = (Cat) map2.get("고양이").get(0);
		System.out.println("첫번째 고양이의 이름 : " + outCat2.name);
		
	}
}

 

- HashMap<이름, 값>

  key/name, value가 쌍으로 들어가야 한다.

  < > 안에 넣을 값의 타입(크기)을 명시해야 한다.

 

- 값을 넣을 때 put, 값을 가져올 때 get (이름을 키값으로)

 

- 해쉬맵은 동일한 이름(값)이 있으면 덮어씌운다.

  vs. ArrayList는 계속 추가된다.

 

Cat outCat2 = (Cat) map2.get("고양이").get(0);

- 해쉬맵의 / 고양이들이 들어가있는 arraylist의 / 첫번째(=0번지) 고양이를 가져온다.

- House 말고 cat이 타입이 될 수 있도록 타입캐스팅을 해준다. (cat)

 

'JAVA' 카테고리의 다른 글

H2. 0719_ JAVA 기초2, 응용 과제  (0) 2021.10.31
H1. 0716_ JAVA 기초  (0) 2021.10.31
7-1. 0713_ Interface, Abstract class  (0) 2021.10.24
6. 0712_ try-catch절, Getter and Setter  (0) 2021.10.24
5. 0709_ 널체크(Null Check), ArrayList  (0) 2021.10.23