- java collection sort using Comparator알쓸개잡java collection 프레임워크에서 Comparator 인터페이스를 이용하여 sorting 처리 방법에 대해서 기록한다. Comparator 인터페이스 Comparator 인터페이스는 int compare(T o1, T o2) 형태의 FunctionalInterface이다. Comparator 인터페이스 구현체를 collection 인스턴스의 sort() 메서드에 전달할 수 있다. sort() 메서드 내부적으로 Comparator 인스턴스의 compare() 메서드를 호출한다. sort() 메서드는 내부적으로 인자로 전달된 Comparator 인스턴스의 compare() 호출의 결과가 > 0인 경우 swap 한다. Comparator.comparing() Comparator 인스턴스는 몇 가지 ..
- 2023-10-17 01:08:45
- java generic class알쓸개잡java generic은 java 프로그래밍에서 매우 중요한 개념 중 하나로 generic을 사용하여 타입 안정성을 높이고 재사용성을 개선할 수 있다. 이번 포스팅에서는 java generic의 개념과 활용 방법에 대해서 기록한다. Generic 코드 사용의 이점 java 컴파일시 더 강력한 유형 검사를 수행한다. java 컴파일러는 일반 코드에 엄격한 타입 검사를 적용하고 코드가 타입 안전성을 위반하는 경우 컴파일 오류를 발생시켜 런타임 이전에 문제를 찾을 수 있다. 타입을 명확히 지정하여 형변환을 제거할 수 있다. //uses unchecked or unsafe operations. 경고가 발생한다. List list = new ArrayList(); list.add("hello"); String s..
- 2023-09-24 19:51:29
- java time convert (시간 변환)알쓸개잡애플리케이션 개발을 하다 보면 종종 문자열 타입의 시간 정보를 자바의 LocalDateTime 혹은 LocalDate, LocalTime과 같은 인스턴스로 변환을 하거나 역으로 원하는 시간 형식으로 문자열로 변환을 해야 하는 경우가 있다. 또한 지역 시간(timezone)에 맞도록 시간을 변경해야 하는 경우도 있을 것이다. 이번 포스팅에서는 자바에서 시간 변환과 관련된 내용을 기록한다. 기본으로 제공되는 시간 관련 클래스 java에서는 기본적으로 제공하는 몇 가지 시간 관련 클래스가 있다. 해당 클래스의 목록은 아래와 같다. 클래스 now() 호출 형식 기본 timezone LocalDateTime 2023-09-17T13:22:51.003196 시스템에 적용된 timezone의 날짜와 시간 표시 Loc..
- 2023-09-17 19:35:01
- Java - 람다 표현식 (lambda expression) 개요알쓸개잡Java SE 8 부터 람다 표현식 이라는 개념이 도입되었다. 람다 표현식은 Functional Interface 를 구현하는 구현체라고 보면 좋을 것 같다. 혹은 Functional Interface의 익명 클래스 인스턴스를 생성하는 간단한 방법이라고 봐도 좋을 것 같다.이번 포스팅에서는 람다 표현식에 대한 소개를 하고자 한다. 람다 표현식 작성 세 단계람다 표현식을 작성할 때는 아래의 세 단계에 따라 작성하면 도움이 될 것 같다.작성하려는 람다 표현식의 유형 식별하기 (Functional Interface)구현할 올바른 메소드 찾기메소드 구현하기람다 표현식을 작성할 때 고려할 위 3가지 단계에 따라서 차근 차근 알아보자. Functional Interface (함수형 인터페이스)람다 표현식의 유형에는..
- 2023-09-10 23:19:29
- jdk pattern matching for switch알쓸개잡jdk 17 이전 릴리즈 에서는 switch 문의 선택자 표현식은 숫자, 문자열, Enum 상수로만 평가되었고 case 레이블은 상수만 지원을 하였습니다. jdk 17 릴리즈 부터는 switch 문의 선택자 표현식은 모든 타입이 될 수 있으면 case 레이블에는 패턴이 지원되도록 개선 되었습니다. 따라서 switch statement(문) 혹은 switch expression(표현식) 의 case 레이블에 pattern matching 을 적용할 수 있게 되었습니다. 이번 포스팅에서는 jdk pattern matching 을 swich 문과 표현식에 적용하는 방법을 기술합니다. jdk pattern matching for switch 이력 jdk 17 에서 preview 기능으로써 JEP 406 에서 제..
- 2023-08-26 18:24:52
- jdk pattern matching for instanceof알쓸개잡pattern matching 은 객체가 특정 구조를 가지고 있는지 테스트한 다음 일치하는 경우 해당 객체에서 데이터를 추출하는 작업을 포함합니다. 이번 포스팅에서는 instanceof 연사자에 pattern matching 을 적용 하는 방법에 대해서 기술합니다. jdk pattern matching jdk 14 버전에서 instanceof 연산자에 대한 pattern matching 기능이 JEP 305 를 통해 preview 기능으로 처음 제안됨 jdk 16 버전에서 instanceof 연산자에 대한 pattern matching 기능이 JEP 394 를 통해 정식 기능으로 릴리즈됨 jdk 17 버전에서 switch 표현식과 구문에 대한 pattern matching 기능이 JEP 406 을 통해 ..
- 2023-08-26 15:43:08
- java record 용법 - from jdk 14알쓸개잡jdk 14 에서 새로운 타입 으로 record 가 preview 형태로 도입되었습니다. Enum 타입과 마찬가지로 record 타입은 몇가지 제약사항을 가지고 있으며 불변의 데이터 셋을 정의하는데 상당한 간소함을 제공합니다. JEP 359 에 기술된 내용을 보면 record 의 도입배경과 목적 외에 여러 관련 사항들을 확인해 볼 수 있습니다. 이번 포스팅에서는 record의 제약사항 및 용법에 대해서 알아보겠습니다. record 의 도입배경과 목적 불변의 데이터 셋 (data carrier) 역할을 하는 클래스의 경우에도 생성자, 접근자, equals(), hashCode(), toString() 등 반복적인 코드를 많이 작성해야 하는 불편함과 함께 record 는 불변하는 데이터 집합을 보다 쉽고, ..
- 2023-08-19 01:53:32
- CompletableFuture 를 알아보자알쓸개잡자바에서 스레드 처리시에 Future 객체를 통해서 스레드의 실행 결과를 얻어올 수 있다. 하지만 Future 를 사용하는 경우 단일 스레드 처리가 완료될 때까지 blocking 이 일어나게 된다. Future 의 한계점 Future 는 기본적으로 isDone, isCanceled 와 같은 기본사항을 체크할 수 있는 메소드를 제공하지만 각기 다른 실행시간을 가지는 Future 들을 조합해서 계산을 한다든지 다른 질의의 결과와 같이 계산을 한다든지 하는 복잡한 로직을 다루기가 힘들다. CompletableFuture 는 Future 와 CompletionStage 를 상속하는데 CompletionStage 인터페이스를 통해서 다양한 연쇄 작업을 수행할 수 있도록 한다. CompletionStage Comp..
- 2023-08-06 23:20:29
- byte 배열에서 charset 정보 detecting 하기알쓸개잡간혹 바이트 배열의 문자열로부터 인코딩 정보를 알 수 없어 String 타입으로 디코딩 할때 문자열이 깨지는 경우가 있다. 이 경우 charset detector 를 사용하여 해당 바이트 배열로 부터 인코딩 정보를 알 수 있다. 인코딩 정보를 알면 해당 인코딩 정보를 기반으로 디코딩을 하면 되기 때문에 문자열이 깨지는 경우를 어느정도 개선할 수 있다. juniversal charset detector 와 icu4j 사용법에 대한 샘플 코드는 아래와 같다. Juniversal charset detector dependency com.googlecode.juniversalchardet juniversalchardet 1.0.3 package com.example.charset.detect; import or..
- 2023-08-04 22:55:52
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)