JVM/Java33 [Lombok] @Builder.ObtainVia 사용법과 toBuilder 개념 @Builder.ObtainVia https://projectlombok.org/features/Builder @Builder를 사용하여 여러분이 만든 클래스의 인스턴스를 생성하는 빌더를 만들 때 (이것은 메서드에 @Builder를 추가하지 않는 한 항상 해당됩니다), @Builder(toBuilder = true)를 사용하여 이 클래스 내부에 toBuilder()라는 이름의 인스턴스 메서드도 생성할 수 있습니다. 이 메서드는 현재 인스턴스의 모든 값으로 시작하는 새로운 빌더를 만듭니다. 또한 매개변수(생성자 또는 메서드의 경우)나 필드(타입에 @Builder를 사용하는 경우)에 @Builder.ObtainVia 주석을 넣어서 해당 필드/매개변수의 값을 이 인스턴스에서 가져오는 대체 수단을 나타낼 수 있.. JVM/Java 2024. 3. 21. [Java] 반복문 종류 및 특징 (for, while, do-while) 반복문 코드를 반복적으로 실행하고자 할 때 사용하는 구문 반복문 종류 : for, while, do-while for : 반복 횟수를 알고 있을 경우 주로 사용 while : 조건에 따라 반복할 때 주로 사용 for문 반복문의 대표로, 조건식이 참인 동안 주어진 횟수만큼 실행문을 반복 수행한다. 구문 for ( 초기화 ; 조건식 ; 증감식 ) { // 실행 코드 } for(int i = 0; i < 10; i ++) { System.out.println(i); } 구조 초기화 : 반복할 변수의 초기값을 설정한다 조건식 : 반복할 조건식으로 true 라면 실행문을, false 라면 실행하지 않고 반복문을 벗어난다 증감식 : 반복할 변수를 더하거나, 빼는 등의 수행 방식을 설정하여 반복 횟수를 결정한다 En.. JVM/Java 2023. 11. 7. [Java] 문자열, 객체, 배열 Null Check StringUtils org.apache.commons.lang3.StringUtils 요약 Empty : Null, 공백문자("") Blank : Null, 공백문자(""), whitespace(" ") Empty StringUtils.isEmpty : Null 혹은 공백문자("") 이면 true 값 반환 StringUtils.isNotEmpty : Null 혹은 공백문자("") 이면 false 값 반환 StringUtils.isAnyEmpty : 문자들 중 Null 혹은 공백문자("") 있을 시 true 값 반환 StringUtils.isNoneEmpty : 문자들 중 Null 혹은 공백문자("") 있을 시 false 값 반환 StringUtils.isAllEmpty : 모든 문자열들이 Null 혹은.. JVM/Java 2022. 11. 18. [Lombok] 자주 사용되는 Lombok Annotation 기능정리 먼저 자바 라이브러리 Lombok 다운로드 및 적용방법은 다음 게시글을 참고하자. Java 필수 라이브러리 Lombok 사용, 적용방법 Java 필수 라이브러리 Lombok 사용, 적용방법 Lombok 라이브러리는 VO(Value Object) 나 DTO(Data Transfer Object) 생성 시 혁신적으로 코드를 줄여주는 라이브러리 입니다. 얼마나 혁신적으로 코드를 줄이는지.. aljjabaegi.tistory.com @Getter, @Setter 필드에 @Getter/@Setter 을 붙이면, 해당 필드에 대한 기본 getter/setter 메소드를 생성해준다. 접근 제한자 AccessLevel @Getter/@Setter 에서의 접근 제한자 설정을 할 수 있다. 만약 생성되는 getter/se.. JVM/Java 2022. 9. 4. [Java] 객체 매핑 라이브러리 ModelMapper 살펴보자 ModelMapper ? 서로 다른 클래스의 값을 한 번에 복사하게 도와주는 라이브러리로, 어떤 Object (Source Object) 에 있는 필드 값들을 자동으로 원하는 Object (Destination Object) 에 매핑 시켜주는 라이브러리다. ModelMapper 공식 문서 주로 DTO와 같은 클래스로 데이터를 받은 후 원하는 클래스(Entity)에 넣어줄 때, Getter/Setter를 이용해 필드를 복사/붙여넣기하는 작업을 거친다. 이 때, 매핑해야할 필드가 다른 경우도 빈번하다. 즉, 다른 모델의 Object를 매핑해줘야하는 작업이 발생할 수 있다. 이런 단점들을 해결하기 위한 라이브러리이다. 세팅 의존성 추가 build.gradle implementation 'org.modelmap.. JVM/Java 2022. 8. 17. [Java] Java Stream 활용하여 두 개의 List 객체 비교하기 Stream. -Match 메소드 예제 allMatch() : 모든 요소들이 매개 값(Predicate)로 주어진 조건을 만족하는지 조사 anyMatch() : 최소한 한 개의 요소가 주어진 조건에 만족하는 지 조사 noneMatch() : 모든 요소들이 주어진 조건을 만족하지 않는지 조사 class Test { public static void main(String[] args) { int[] intArray = {2, 4, 6}; boolean allResult = Arrays.stream(intArray).allMatch(a -> a % 2 == 0); boolean anyResult = Arrays.stream(intArray).anyMatch(a -> a % 2 == 0); boolean non.. JVM/Java 2022. 8. 16. [Java] 중복 키 허용 MultiValueMap 와 HashMap 차이 MultiValueMap 살펴보기 전에 Map에 대해 간단히 살펴보자. Map 의 종류 HashMap TreeMap LinkedHashMap HashMap Map의 기본 형식으로, key : value 를 한 쌍으로 데이터를 저장하며 중복된 키가 존재하지 않는다. Map에 있는 데이터는 키 값을 기준으로 가져온다. TreeMap HashMap 기능 + 자동 정렬 TreeMap은 데이터가 들어올 때마다 key 값에 따라 자동 정렬된다. LinkedHashMap HashMap 기능 + 입력 순서 보장 HashMap에 데이터를 C - B - A 순서로 했다면, 나중에 맵에 있는 모든 값을 출력할 때 C - B - A 순으로 출력된다는 보장이 없다. 하지만, LinkedHashMap은 이 문제를 해결해준다. M.. JVM/Java 2022. 6. 24. [Java] Comparator, Lamda 사용하여 2차원 배열 정렬하기 오름차순, 내림차순 등 정렬을 할 때 음수가 나와야 오름차순인지, 양수가 나와야 오름차순인지 항상 헷갈려서 기억하기 위해 잘 정리된 포스팅을 참고하여 남겼다. 2차원 배열을 바로 Arrray.sort()를 통해 정렬하려고 하면, 비교 기준이 구현되어 있지 않기 때문에 캐스팅에 실패했다는 java.lang.ClassCastException: I cannot be cast to java.lang.Comparable 오류가 발생한다. 그 해결책으로 Comparable,Comparator 인터페이스를 구현하여 정렬기준을 추가해 2차원배열 뿐만 아니라 객체비교할 때도 사용할 수 있다. int[][] arr = new int[][]{{5,10},{3,30},{1,50},{4,20},{2,40},{5,60}}; Ar.. JVM/Java 2022. 6. 8. [Java] Arrays.sort 와 Collections.sort 정리 자료구조 알고리즘을 공부할 때 꼭 알아둬야할 기능인데.. 할 때마다 헷갈리고 까먹어서 정리좀 해둬야겠다.. Arrays.sort 오름차순 기본 오름차순 정렬 : 숫자 - 대문자 - 소문자 - 한글 순서로 정렬 import java.util.Arrays; public class Sort { public static void main(String[] args) { String[] str = {"a", "1", "가", "A", "3", "나"}; for(String s : str) {// 정렬 전 출력 System.out.print(s + " "); } System.out.println(); Arrays.sort(str);// 정렬 후 출력 for(String s : str) { System.out.prin.. JVM/Java 2022. 6. 6. [Java] StringTokenizer Class 사용 및 Split 비교 StringTokenizer Class ? 문자열을 스페이스, 특정 구분자 등의 기준으로 분리할 때 사용 StringTokenizer 구문 StringTokenizer st = new StringTokenizer("문자열");// 띄어쓰기 기준으로 문자열 분리 StringTokenizer st = new StringTokenizer("문자열", "구분자");// 구분자 기준으로 문자열 분리 StringTokenizer st = new StringTokenizer("문자열", "구분자", boolean); // 구분자 기준으로 문자열 분리할 때 구분자도 Token으로 넣을지(true), 말지(false default) StringTokenizer 라이브러리 Import import java.util.Str.. JVM/Java 2022. 5. 28. [Java] 스트림 (Stream) 타입별 변환 스트림 (Stream) 만들기 컬렉션 스트림 Collection에 stream()이 정의되어 있어 Collection의 자손인 List와 Set을 구현한 컬렉션 클래스들은 모두 stream()으로 스트림을 생성할 수 있다. Stream Collection.stream() // List로부터 스트림 생성 List list = ARrays.asList(1,2,3,4,5); Stream intStream = list.stream(); 배열 스트림 배열을 소스로하는 스트림을 생성하는 메서드로 Stream과 Arrays에 static 메서드로 정의되어 있다. 문자열 스트림 Stream srtSTream = Stream.of("a","b","c");// 가변인자 Stream srtSTream = Sream.of(n.. JVM/Java 2022. 3. 30. [Java] POI 엑셀 다운로드 시 Invalid char (/) found at index (6) in sheet name 에러 [Java] POI 엑셀 다운로드 시 Invalid char (/) found at index (6) in sheet name 에러 Java 엑셀 다운로드 구현하기 [Java] POI 라이브러리 사용 : 엑셀 다운로드 로직 구현하기 [Java] POI 라이브러리 사용 : 엑셀 다운로드 로직 구현하기 - 의존성 추가 Spring Boot 경우 build.gradle에 Gradle dependency 추가 compile group: 'org.apache.poi', name: 'poi', version: '3.13' Spring 경.. haenny.tistory.com Java에서 엑셀다운로드 로직을 구현한 뒤 실행을 했더니 다음과 같은 에러가 발생했다. java.lang.IllegalArgumentExcep.. JVM/Java 2022. 2. 15. 이전 1 2 3 다음 추천 글 728x90 반응형