2021.02.25 국비교육 24일차

List를 HashMap에 포함시키기

  • 두개의 리스트 생성
ArrayList<Person> list = new ArrayList<Person>();
        list.add(new Person("홍길동", 20, "서울"));
        list.add(new Person("홍길동2", 30, "서울2"));
        list.add(new Person("홍길동3", 40, "서울3"));

        ArrayList<Person> list2 = new ArrayList<Person>();
        list2.add(new Person("이순신", 20, "전라"));
        list2.add(new Person("이순신2", 30, "전라2"));
        list2.add(new Person("이순신3", 40, "전라3"));
  • 리스트를 담기 위한 HashMap 객체 생성 후 리스트 삽입
HashMap<String, ArrayList<Person>> map
                                = new HashMap<String, ArrayList<Person>>();

        map.put("one", list);
        map.put("two", list2);
  • 우리가 필요한게 리스트에서 20살인 사람의 데이터를 출력한다고 가정해본다
  • 출력의 순서는 먼저 HashMap이 가장 큰 껍질이니 여기서 list를 출력하기 위한 key값이 필요하다
  • key는 map에서 string타입이니 Set으로 생성
Set<String> keys = map.keySet(); // keys에는 one, two가 있음
  • for문에서 key를 사용해서 list를 순회함
  • list 속의 Person객체를 찾아야 하기때문에 for문이 하나 더 필요함
for(String key : keys){
    for(Person p : map.get(key)){ // map.get(key)하면 person을 담고있는 list가 나옴
        if(p.getAge() == 20){
            System.out.println(p); // 나이가 20살인 Person 객체 출력
        }
    } 
}

HashMap에 List 포함시키기

  • 두개의 HashMap 생성
HashMap<String, Person> map1 = new HashMap<>();
        map1.put("one", new Person("홍길동1", 20, "서울"));
        map1.put("two", new Person("이순신1", 30, "전라"));
        map1.put("three", new Person("유관순1", 40, "서울"));


        HashMap<String, Person> map2 = new HashMap<>();
        map2.put("one", new Person("홍길동2", 20, "서울2"));
        map2.put("two", new Person("이순신2", 30, "전라2"));
        map2.put("three", new Person("유관순2", 40, "서울2"));
  • HashMap을 보관할 list 생성
ArrayList<HashMap<String, Person>> list = 
                new ArrayList<HashMap<String, Person>>();

        list.add(map1);
        list.add(map2);
  • 이번에도 마찬가지로 나이가 20살인 Person 객체 출력이 목적

  • 먼저 리스트에서 map을 출력해야함

for(HashMap<String, Person> xxx : list ){ // list속에는 map이 여러개 들어있다.
    //HashMap에서 Person을 가져오려면 key값이 필요함
    //key는 String
    Set<String> keys = xxx.keySet(); // key값을 가져왔으니 map을 돌면서 Person 순회
    for(String key : keys){ //xxx.get(key) -> key에 해당하는 person값
        Person p = xxx.get(key);
        if(p.getAge() == 20){
            System.out.println(p); // 나이가 20살인 person 출력
        }
    }
}

+ Recent posts