JAVA day 12

lee·2021년 12월 10일
0

JAVA

목록 보기
12/14

learning

수업내용 링크

저장소 : GitHub Repositories leeconomy1121/java-study

컬렉션(Collection API)

  • HashMap

  • Map 출력
    entrySet() 메서드는 key와 value의 값 모두 출력
    keySet() 메서드는 key의 값만 출력

  • Map 예제

App class

package exampleMap;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
import java.util.TreeMap;

class Person implements Comparable<Person> {
	// Person의 이름으로 equals메소드를 만들어 key값의 중복을 이름으로 하도록한다.
	private String name;

	public Person(String name) {
		this.name = name;
	}
	
	public String toString() {
		return name;
	}

	@Override
	public int hashCode() {
		return Objects.hash(name);
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Person other = (Person) obj;
		return Objects.equals(name, other.name);
	}

	@Override
	public int compareTo(Person o) {
		return name.compareTo(o.name);
		// 이름으로 비교
	}
	
}

public class App {

	public static void main(String[] args) {
		// Map을 사용한 예제
		Map<Person, Boolean> people1 = new HashMap<>();
		Map<Person, Boolean> people2 = new LinkedHashMap<>();
		Map<Person, Boolean> people3 = new TreeMap<>();
		
		// Map에서 key값으로 중복을 결정하는데 Person클래스에서 equals메소드를 만들어 이름이 같으면 중복이 되게 수정
		inputMap(people1);
		displaymap(people1);
		
		inputMap(people2);
		displaymap(people2);
		
		// TreeMap은 정렬하는데 이때 key값인 Person클래스에서 Comparable 인터페이스를 구현해야 한다.
		inputMap(people3);
		displaymap(people3);
	}

	private static void displaymap(Map<Person, Boolean> map) {
		// Map의 key와 value값을 출력한다.
		map.forEach((k, v) -> System.out.println(k + " : " + v));
		System.out.println(); // 한 줄 띄우기
		
	}

	private static void inputMap(Map<Person, Boolean> map) {
		// Map에 person객체와 boolean을 입력(원격여부)
		map.put(new Person("펭수"), true);
		map.put(new Person("길동"), true);
		map.put(new Person("라이언"), false);
		map.put(new Person("둘리"), false);
		map.put(new Person("라이언"), false); // 똑같은 이름은 중복안됨
		map.put(new Person("둘리"), true); // 둘리는 업데이트 됨
		
	}

}

📝결과

profile
Hello, world!

0개의 댓글