Day5 -Example2

박경희·2023년 5월 26일
0

강의 복습 및 정리

목록 보기
10/28
post-thumbnail

Example2

import java.util.*;

public class Example2 {
    public static void main(String[] args) {
        Map<String, List<Person>> map = new HashMap<>(); // List<Person>> -> 리스트에 사람을 넣어주는 것.
//        서울null ->  [박씨, 김씨]
//        부산에 이씨
//        대전에 노씨
//        제주에 류씨

        List<Person> getList = map
                 .getOrDefault("서울", new ArrayList<Person>());
        getList.add(new Person("김씨", 20));
        map.put("서울", getList);
        System.out.println(map);

//        // 업데이트 가능하게 한 것. 리스트에 없으면 빈 리스트를 만들어주고, 있는것에 추가?할 수 있도록
//         List<Person> getList = map
//                 .getOrDefault("서울", new ArrayList<Person>());
//         getList.add(new Person("김씨", 20));
//         map.put("서울", getList);
//         System.out.println(map);

//         List<Person> list = new ArrayList<Person>(); // 이걸로 개별 사람을 만들어주는 것이다.
//         이렇게 하나씩 하기보다 (사람 종류가 추가될 수 있으니 ) 위에처럼 해야함.
//         map.add(new Person("김씨", 20));
//
    }


}
class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

이걸 참고해서 해서 입력값을 받는 사람을 만들어보자~

import java.util.*;

public class Example2 {
    public static void main(String[] args) {
        Map<String, List<Person>> map = new HashMap<>();
        // List<Person>> -> 리스트에 사람을 넣어주는 것.
//        서울null ->  [박씨, 김씨]
//        부산에 이씨
//        대전에 노씨
//        제주에 류씨

        List<Person> getList = map
                 .getOrDefault("서울", new ArrayList<Person>());
        getList.add(new Person("김씨", 20));
        map.put("서울", getList);
        System.out.println(map);

}
class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

toString만드는 방법
command + n을 누르면

가 나온다.
여기서 ok를 누르면

class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

이렇게 오버라이드로 toString이 생성되서 주소값 대신 입력한 값을 받을 수 있게된다.
(class Person 안에서 생성해야함!)

  • toString이 없을 때 나오는 것 - > 주소값
    {서울=[Person@f6f4d33]}
  • toString을 생성 후 나오는 값. -> 내가 받고 싶은 값.
    {서울=[Person{name='김씨', age=20}]}

해설~~

  • 메인은 짧으면 짧을수록 좋다. 최종 완성 코드. 보면서 다시 왜 이렇게 만들었는지 생각해보자!
import java.util.*;

public class Example2 {
    public static void main(String[] args) {
        Map<String, List<Person>> map = new HashMap<>(); // List<Person>> -> 리스트에 사람을 넣어주는 것.
        
        //방법1.
        Scanner sc = new Scanner(System.in);
        List<Person> getList = map.getOrDefault("서울", new ArrayList<Person>());
        getList.add(new Person("김씨", 20));
        map.put("서울", getList);
        System.out.println(map);
        String key = sc.nextLine();
      
       //방법2.업데이트 가능하게 한 것. 리스트에 없으면 빈 리스트를 만들어주고, 있는것에 추가?할 수 있도록
//         List<Person> getList = map
//                 .getOrDefault("서울", new ArrayList<Person>());
//         getList.add(new Person("김씨", 20));
//         map.put("서울", getList);
//         System.out.println(map);

//         List<Person> list = new ArrayList<Person>(); // 이걸로 개별 사람을 만들어주는 것이다.
//         이렇게 하나씩 하기보다 (사람 종류가 추가될 수 있으니 ) 위에처럼 해야함.
//         map.add(new Person("김씨", 20));
//
    }

//
//    @Override
//    public String toString() {
//        return "Person{" +
//                "name='" + name + '\'' +
//                ", age=" + age +
//                '}';
//    }
}
class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

0개의 댓글