국비 24일차 컬렉션 List, HashMap 익숙해지기
2021. 2. 5. 23:48
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 출력
}
}
}
'ETC > 국비교육' 카테고리의 다른 글
국비 26일차 JDBC(delete, update, 클래스 연동) (0) | 2021.02.10 |
---|---|
국비 25일차 JDBC(DB접근, Select, insert) (0) | 2021.02.08 |
국비 23일차 JAVA 컬렉션, 제네릭, List, map (0) | 2021.02.04 |
국비 22일차 throw, 예제 (0) | 2021.02.03 |
국비 21일차 JAVA(중첩, Comparator, DecimalFormat, 문자열 나누기, StringTokenizer, StringBuffer, Wrapper(오토박싱, 언박싱), Random, Calander, SimpledataFormat, Array API, ENUM, 예외(try-catch, finally)) (0) | 2021.02.02 |