예제파일 DTO 1) Product.java package dto.Product; import lombok.Getter; import lombok.Setter; import java.util.Optional; public class Product { private int idx; private String productName; private int ordCnt; private int totalCnt; private Optional person; public int getIdx() { return idx; } public String getProductName() { return productName; } public int getOrdCnt() { return ordCnt; } public int ge..
참고 DTO package dto.Product; import java.util.Optional; public class Person { private int idx; private String personName; private Optional job; public int getIdx() { return idx; } public void setIdx(int idx) { this.idx = idx; } public String getPersonName() { return personName; } public void setPersonName(String personName) { this.personName = personName; } public Optional getJob() { return job; ..
forEach List numbers = Arrays.asList(2, 3, 5, 6); numbers.stream() .map(x -> x + 3) .filter(x -> x % 2 == 0) .limit(3) .forEach(System.out::println); /* 디버깅 x 결과 출력 */ 스트림의 파이프라인 연산을 디버깅하자. forEach 로 스트림 결과를 출력하거나 로깅할 수 있다. 하지만 forEach를 호출하게되면, 호출 순간에 전체 스트림이 소비된다. peek 스트림 연산 peek 을 활용하자. 호출 순간 전체 스트림을 소비하는 forEach 에 비해 peek은 실제로 스트림의 요소를 소비하지는 않는다. peek 은 자신이 확인한 요소를 파이프라인의 다음 연산으로 그대로 전달하고, 각..
getOrDefault key 가 null 일 경우 default Value 를 설정할 수 있다. /* Map */ Map testMap2 = Map.ofEntries(entry("AAA", 10), entry("BBB", 20), entry("CCC", 30)); Key가 존재하면 해당 Value 를 그대로 출력한다. System.out.println(testMap2.getOrDefault("AAA", "NULL")); // 10 Key가 존재하지 않으면 설정된 "NULL"을 출력한다. System.out.println(testMap2.getOrDefault("DDD", "NULL")); // NULL 계산패턴 computeIfAbsent key 가 없을 경우 지정된 value를 쌍으로 Map 에 항목..
forEach /* Map */ Map testMap2 = Map.ofEntries(entry("AAA", 10), entry("BBB", 20), entry("CCC", 30)); 전체 요소를 출력해보자. 기존 for문 for (Map.Entry entry : testMap2.entrySet()) { System.out.println(entry.getKey()); } java8 forEach testMap2.forEach((name, num) -> System.out.println(name + " : " + num)); sorted /* Map */ Map testMap2 = Map.ofEntries(entry("AAA", 10), entry("BBB", 20), entry("CCC", 30)); ke..
List.of 오버로드 List 인터페이스의 of 메소드를 보면 아래와 같이 다양한 오버로드 버전이 있다. static List of() { return ImmutableCollections.emptyList(); } static List of(E e1) { return new ImmutableCollections.List12(e1); } static List of(E e1, E e2) { return new ImmutableCollections.List12(e1, e2); } static List of(E e1, E e2, E e3) { return new ImmutableCollections.ListN(e1, e2, e3); } ... static List of(E e1, E e2, E e3, E e..
List 1) Arrays.asList : 요소 갱신은 가능하나, 추가/삭제할 수 없다. /* List */ List testList = Arrays.asList("AAA", "BBB", "CCC"); testList.set(0, "DDD"); // 갱신은 가능하다. // testList.add("DDD"); // 고정 리스트로, 요소를 추가/삭제 할 수 없다. 2) HashSet(Arrays.asList()) // 리스트를 인수로 받는 HashSet 생성자를 사용하여 생성할 수 있다. Set testSetList = new HashSet(Arrays.asList("AAA", "BBB", "CCC")); testSetList.add("DDD"); 3) List.of 팩토리 메소드 : 리스트를 변경할 수 ..
샘플 리스트 // sample List List products = Arrays.asList( new Product(0, "Note_red", 1, 100), new Product(1, "Note_blue", 2, 200), new Product(2, "Note_green", 3, 300), new Product(3, "Note_pink", 4, 400), new Product(4, "Note_yellow", 5, 500), new Product(5, "Note_black", 6, 600), new Product(6, "Note_white", 7, 700), new Product(7, "Note_purple", 8, 800) ); 요약 Collectors.coutning() /* Collectors 의 ..
평면화 FlatMap List의 요소에 속하는 모든 고유문자를 리스트로 리턴받고 싶다. 아래의 과정을 걸쳐서 스트림 평면화를 진행하는 flatMap을 이해해보자. 우선, 우리가 하고싶은 상황은 아래와 같다. 이전: "AAA", "BBB", "CCC" 이후: "A", "A", "A", "B", "B", "B", "C", "C", "C" 과정1. Map 사용 // sample List List wordList = Arrays.asList( "AAA", "BBB", "CCC" ); /* 원하는 결과 : List / 결과 : List */ List productNameList = wordList.stream() .map(word -> word.split("")) .collect(Collectors.toList(..
샘플 파일 생성 1) Product.java public class Product { private int idx; private String productName; private int ordCnt; private int totalCnt; public int getIdx() { return idx; } public String getProductName() { return productName; } public int getOrdCnt() { return ordCnt; } public int getTotalCnt() { return totalCnt; } public Product(int idx, String productName, int ordCnt, int totalCnt) { this.idx = i..
배열 Array를 역순 정렬하기 Arrays.sort(arr, Collections.reverseOrder());
Stream 사용하여 배열 array의 max, min 구하기 1) max int arrayMax = Arrays.stream(arr).max().getAsInt(); 2) min int arrayMin = Arrays.stream(arr).min().getAsInt();