Language/Java13 Java - JSON 파싱 JSON 형식으로 쓰여진 String을 Java 객체로 변환하려면 어떻게 해야 할까? JSON 라이브러리를 사용하면 된다. Java에는 대표적으로 Jackson, Gson 등의 JSON 라이브러리들이 있다. 의존성 추가 dependencies { // 다른 의존성들 implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.5' // 적절한 버전 사용 } 구현 import com.fasterxml.jackson.databind.ObjectMapper; public record JsonToJava() { private static final ObjectMapper MAPPER = new ObjectMapper(); public static JsonT.. 2023. 8. 3. Java - ThreadLocal ThreadLocal이란 자바에서 제공하는 동시성 문제를 해결하는 방법이다. 쉽게 생각하면 한 스레드 내에서 공유하는 전역 변수라고 할 수 있을 것 같다. 싱글톤으로 등록된 스프링 빈은 객체의 인스턴스가 애플리케이션에 딱 1개만 존재하게된다. 그러면 이 인스턴스의 필드를 여러 쓰레드가 동시에 접근할 때 문제가 발생할 수 있다. (읽기만 하면 문제 없음. 수정 시 문제) 쓰레드 로컬을 사용하면 각 쓰레드마다 별도의 내부 저장소를 제공해서 같은 인스턴스의 쓰레드 로컬 필드에 접근해도 문제 없다. -> 싱글톤 객체에서 동시 접근 가능성이 있는 필드를 쓰레드 로컬로 생성해주면 된다! java.lang.ThreadLocal //private String name; //기존 코드의 필드 private ThreadL.. 2022. 7. 2. Java - Record란? 레코드란? 불변 데이터 객체를 쉽게 생성할 수 있도록 하는 새로운 유형의 클래스 JDK14에서 preview로 등장하여 JDK16에서 정식 스펙으로 포함 JDK 14부터는 반복적인 데이터 클래스를 레코드로 대체할 수 있습니다. 레코드는 필드의 유형과 이름만 필요로 하는 변경할 수 없는 데이터 클래스입니다. equals , hashCode , toString 메소드, private , final 필드, public 생성자는 자바 컴파일러에 의해 생성됩니다. 일반 Java 클래스와 마찬가지로 레코드에 정적 변수와 메서드를 포함할 수도 있습니다 . 레코드의 제한 레코드는 암묵적으로 final 클래스이고, abstract 선언 불가 다른 클래스를 상속 받을 수 없음(extends X) 인터페이스 구현(imple.. 2022. 6. 24. Wrapper Class vs Primitive Type https://www.differencebetween.com/difference-between-wrapper-class-and-vs-primitive-type-in-java/ Difference Between Wrapper Class and Primitive Type in Java | Compare the Difference Between Similar Terms Key Difference - Wrapper Class vs Primitive Type in Java Java is a popular programming language that is used to develop various applications. One advanta www.differencebetween.com 이 글의 해석본이다. 데.. 2022. 3. 29. Java - 스트림으로 데이터 수집 1. 컬렉터란 무엇인가? 1.1 고급 리듀싱 기능을 수행하는 컬렉터 훌륭하게 설계된 함수형 API의 또 다른 장점으로 높은 수준의 조합성과 재사용성을 꼽을 수 있다. collect로 결과를 수집하는 과정을 간단하면서도 유연한 방식으로 정의할 수 있다는 점이 컬렉터의 최대 장점이다. 스트림에 collect를 호출하면 스트림의 요소에 리듀싱 연산이 수행된다. collect에서는 리듀싱 연산을 이용해서 스트림의 각 요소를 방문하면서 컬렉터가 작업을 처리한다. 보통 함수를 요소로 변환할 때는 컬렉터를 적용하며 최종 결과를 저장하는 자료구조에 값을 누적한다. 1.2 미리 정의된 컬렉터 Collectors에서 제공하는 메서드의 기능은 크게 세 가지로 구분할 수 있다. 스트림 요소를 하나의 값으로 리듀스하고 요약 요.. 2022. 3. 3. Java - 스트림 활용 데이터를 어떻게 처리할지는 스트림 API가 관리하므로 편리하게 데이터 관련 작업을 할 수 있다. 따라서 스트림 API 내부적으로 다양한 최적화가 이루어질 수 있다. 스트림 API는 내부 반복 뿐 아니라 코드를 병렬로 실행할지 여부도 결정할 수 있다. 1. 필터링 1.1 프레디케이트로 필터링 스트림 인터페이스는 filter 메서드를 지원한다. filter 메서드는 프레디케이트를 인수로 받아서 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환한다. List vegetarianMenu = menu.stram() .filter(Dish::isVegetarian) .collect(toList()); 1.2 고유 요소 필터링 스트림은 고유 요소로 이루어진 스트림을 반환하는 distinct 메서드도 지원한다.. 2022. 3. 3. 이전 1 2 3 다음