300x250
✍️ CompletableFuture in loop 다수의 쓰레드를 만들고, 반복된 작업을 비동기적으로 여러 번 수행하고, 수행 결과를 집계하는 코드를 작성해야 할 때가 있다. 가령 뽑기와 같은 확률 로직이 포함된 서비스의 테스트 코드 작성 시에 이와 같은 니즈가 발생한다. 이때 CompletableFuture를 사용하면 비동기 작업과 콜백 메서드를 매우 쉽게 정의할 수 있다. 아래 코드는 반복문 내부에서 CompletableFutre를 만들어 비동기적으로 작업을 수행해서 결과를 반환하고 콜백 메서드에서 결과를 집계하는 샘플 코드이다. public class ParallelAdder { private List synchronizedList = Collections.synchronizedList(new A..
✍️ Map to Set 1. Simple Loop Map map = new HashMap(); map.put(1, "이말년"); map.put(2, "침착맨"); map.put(3, "주호민"); Set ids = new HashSet(); for (int id : map.keySet()) { ids.add(id); } Set names = new HashSet(); for (String name : map.values()) { names.add(name); } System.out.println(ids); System.out.println(names); // [1, 2, 3] // [침착맨, 이말년, 주호민] 2. Constructor Map map = new HashMap(); map.put(1, "..
✍️ 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 map = new HashMap(); map.put(1, "이말년"); map.put(2, "침착맨"); map.put(3, "주호민"); List ids = new ArrayList(map.keySet()); System.out.println(ids); // [1, 2, 3] List names = new ArrayList(map.values()); Sy..
✍️ 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 memberSet = new HashSet(); memberSet.add(new Member(1, "갱플랭크")); memberSet.add(new Member(2, "카밀")); memberSet.add(new Member(3, "클레드")); Map idToName..
✍️ Set to List @Getter @AllArgsConstructor @ToString public class Member { private int id; private String name; } 1. Java 8 Stream API Set memberSet = new HashSet(); memberSet.add(new Member(1, "침착맨")); memberSet.add(new Member(2, "주호민")); memberSet.add(new Member(3, "김풍")); List memberList = memberSet.stream().collect(Collectors.toList()); System.out.println(memberList); // [Member(id=1, name=침..
✍️ List to Map @Getter @AllArgsConstructor public class MemberGrade { private String name; private String subject; private int grade; } 1. Simple Loop List memberGrades = new ArrayList(); memberGrades.add(new MemberGrade("침착맨", "수학", 100)); memberGrades.add(new MemberGrade("이말년", "수학", 90)); memberGrades.add(new MemberGrade("주호민", "수학", 80)); Map gradeMap = new HashMap(); for (MemberGrade mg : m..