[Java8] Map을 List로 변환 (Map to List)

 

✍️ Map to List

@AllArgsConstructor
@ToString
public class Member {
    private int id;
    private String name;
}

 

Map.keySet() : Key 값들을 Set으로 반환
Map.values() : Value 값들을 Collection으로 반환

 

1. Constructor

Map<Integer, String> map = new HashMap<>();
map.put(1, "이말년");
map.put(2, "침착맨");
map.put(3, "주호민");

List<Integer> ids = new ArrayList<>(map.keySet());
System.out.println(ids);
// [1, 2, 3]

List<String> names = new ArrayList<>(map.values());
System.out.println(names);
// [이말년, 침착맨, 주호민]

 

2. Simple Loop

Map<Integer, String> map = new HashMap<>();
map.put(1, "이말년");
map.put(2, "침착맨");
map.put(3, "주호민");

List<Member> members = new ArrayList<>();
for (int id : map.keySet()) {
    members.add(new Member(id, map.get(id)));
}

System.out.println(members);
// [Member(id=1, name=이말년), Member(id=2, name=침착맨), Member(id=3, name=주호민)]

 

3. Java 8 Stream API

Map의 Key 혹은 Value를 List로 변환하는 케이스

Map<Integer, String> map = new HashMap<>();
map.put(1, "이말년");
map.put(2, "침착맨");
map.put(3, "주호민");

List<Integer> ids = map.keySet().stream().collect(Collectors.toList());
System.out.println(ids);
// [1, 2, 3]

List<String> names = map.values().stream().collect(Collectors.toList());
System.out.println(names);
// [이말년, 침착맨, 주호민]

 

🍊 Map to List Stream API 응용

Map.entrySet() : Key, Value Entry를 Set으로 반환

 

Map의 Key와 Value로 객체를 만들어 List로 변환하는 케이스

Map<Integer, String> map = new HashMap<>();
map.put(1, "이말년");
map.put(2, "침착맨");
map.put(3, "주호민");

List<Member> members = map.entrySet().stream()
        .map(m -> new Member(m.getKey(), m.getValue()))
        .collect(Collectors.toList());
        
System.out.println(members);
// [Member(id=1, name=이말년), Member(id=2, name=침착맨), Member(id=3, name=주호민)]

 

🌱  관련

[Java8] List를 Map으로 변환 (List to Map)

[Java8] List를 Set으로 변환 (List to Set)

[Java8] Set을 List로 변환 (Set to List)

[Java8] Set을 Map으로 변환 (Set to Map)

[Java8] Map을 List로 변환 (Map to List)

[Java8] Map을 Set으로 변환 (Map to Set)