✍️ Set to Map
보통 Set을 Map으로 바꾸는 작업은 Primitive 타입보단 Class 타입에 많이 사용하는 듯하다.
@Getter
@AllArgsConstructor
@ToString
public class Member {
private int id;
private String name;
}
1. Java 8 Stream API
Member Id가 Key, Member name이 Value가 되도록 매핑할 수 있다.
Set<Member> memberSet = new HashSet<>();
memberSet.add(new Member(1, "갱플랭크"));
memberSet.add(new Member(2, "카밀"));
memberSet.add(new Member(3, "클레드"));
Map<Integer, String> idToNames = memberSet.stream()
.collect(Collectors.toMap(Member::getId, Member::getName));
System.out.println(idToNames);
// {1=갱플랭크, 2=카밀, 3=클레드}
혹은 Member Id가 Key, Member 그 자체가 Value가 되도록 매핑할 수도 있다.
Set<Member> memberSet = new HashSet<>();
memberSet.add(new Member(1, "갱플랭크"));
memberSet.add(new Member(2, "카밀"));
memberSet.add(new Member(3, "클레드"));
// Function.identity() == m -> m
Map<Integer, Member> idToMembers = memberSet.stream()
.collect(Collectors.toMap(Member::getId, Function.identity()));
System.out.println(idToMembers);
// {1=Member(id=1, name=갱플랭크), 2=Member(id=2, name=카밀), 3=Member(id=3, name=클레드)}
2. Simple Loop
Set<Member> memberSet = new HashSet<>();
memberSet.add(new Member(1, "갱플랭크"));
memberSet.add(new Member(2, "카밀"));
memberSet.add(new Member(3, "클레드"));
Map<Integer, String> idToNames = new HashMap<>();
for(Member member : memberSet){
idToNames.put(member.getId(), member.getName());
}
System.out.println(idToNames);
// {1=갱플랭크, 2=카밀, 3=클레드}
🌱 관련
[Java8] List를 Map으로 변환 (List to Map)
[Java8] List를 Set으로 변환 (List to Set)
[Java8] Set을 List로 변환 (Set to List)
[Java8] Set을 Map으로 변환 (Set to Map)
'Java > Java 8' 카테고리의 다른 글
[Java8] Map을 Set으로 변환 (Map to Set) (0) | 2022.08.22 |
---|---|
[Java8] Map을 List로 변환 (Map to List) (0) | 2022.08.18 |
[Java8] Set을 List로 변환 (Set to List) (0) | 2022.08.17 |
[Java8] List를 Map으로 변환 (List to Map) (0) | 2022.08.16 |
[Java8] List를 Set으로 변환 (List to Set) (0) | 2022.08.16 |