JAVA/Java: 149개의 글
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 혹은..
ModelMapper ? 서로 다른 클래스의 값을 한 번에 복사하게 도와주는 라이브러리로, 어떤 Object (Source Object) 에 있는 필드 값들을 자동으로 원하는 Object (Destination Object) 에 매핑 시켜주는 라이브러리다. ModelMapper 공식 문서 주로 DTO와 같은 클래스로 데이터를 받은 후 원하는 클래스(Entity)에 넣어줄 때, Getter/Setter를 이용해 필드를 복사/붙여넣기하는 작업을 거친다. 이 때, 매핑해야할 필드가 다른 경우도 빈번하다. 즉, 다른 모델의 Object를 매핑해줘야하는 작업이 발생할 수 있다. 이런 단점들을 해결하기 위한 라이브러리이다. 세팅 의존성 추가 build.gradle implementation 'org.modelmap..
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..
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..
오름차순, 내림차순 등 정렬을 할 때 음수가 나와야 오름차순인지, 양수가 나와야 오름차순인지 항상 헷갈려서 기억하기 위해 잘 정리된 포스팅을 참고하여 남겼다. 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..
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.print(s + " "); } } } a 1 가 A 3 나 1 3 A a 가 나 내림차순 한글 - 소문자 - 대문..
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..
스트림 (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..
Java에서 엑셀다운로드 로직을 구현한 뒤 실행을 했더니 다음과 같은 에러가 발생했다. java.lang.IllegalArgumentException: Invalid char (/) found at index (6) in sheet name '노선별 시작/종료 수집율 목록' 이는 엑셀의 제한 때문에 발생한 오류이다. 실제로 엑셀에서 워크시트에 사용할 수 없는 문자가 있다. 엑셀 제한 문자 \ / * [ ] : ? 시트명에 위의 문자가 포함되었다면 치환해줘야한다. 시트명 치환 나는 대괄호는 소괄호로 치환해주고, 나머지 특수문자는 공백으로 치환해주는 것으로 수정하였다. String sheetName = "시트명/뭐가올지 몰라요"; sheetName = sheetName.replaceAll("\\[", "\\..
[Java] Lombok 사용 시 @Data compileJava 오류 error log compile error > Task :compileJava D:\02.workspace\04.ws2022\GCBIS_H\src\main\java\kr\co\neighbor21\GCBIS_H\cmmn\vo\CmmnGridSet.java:23: warning: Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to y..