본문 바로가기

Study/Java18

[Java] Java8과 Java11의 특징 정리 java8의 특징은 이전 포스트에 다뤘어요. 이번엔 java 11을 다뤄보려 해요. Java 10은 라이선스 없이 상업적으로 사용할 수 있는 마지막 무료 Oracle JDK 였어요. JAva 11부터는 Open JDK를 무료로 사용할 수 있어요. Java 11에서 추가된 내용들을 기능, 성능 관점에서 보도록 해요. 기능 추가 1. String 클래스, 메서드 추가 isBlank, lines, strip, stripLeading, stripTrailing, and repeat가 추가됐어요. String multilineString = "My name \n \n is \n Gump."; List lines = multilineString.lines() .filter(line -> !line.isBlan.. 2021. 11. 14.
[Java] Java API 생성자 구현 및 검증 방식 (String, BigDecimal) 우테코 초기, 객체 검증, 할당 및 방어적 복사에 관련된 논의를 했던 적이 있어요. 논의에 대한 결과와 원문을 블로그에 남겨보려해요. 원문 : https://silly-elderberry-dd6.notion.site/Java-Java-API-8f4dceee5c84440288a5424a6326e457 생성자 코드 구현시, 검증로직을 어떤 순서로 진행하는게 좋을지에 대한 질문의 제이슨의 답변이었습니다. 왜이리 멀리보고 있었지? 답변을 듣고, 들었던 생각이었습니다. 선배 자바 개발자분들이 멀리 있는 것이 아니라, 자바 코드 내에 살아 숨 쉰다는 사실을 까맣게 잊고 있었습니다. (질문을 한 제가 부끄러워지는 듯한 느낌이었습니다.. ㅠㅠ) 그냥 쓰는 것이 아닌, 알고 쓰자. String, BigDecimal은 어.. 2021. 11. 9.
[JUnit5] @ParameterizedTest 애노테이션(반복 테스트) 커스텀 하기 반복 테스트(ParameterizedTest)에 대한 출력을 통일성 있게 하고싶어 아래와 같은 옵션들을 지정했어요. @ParameterizedTest(name = "{displayName} {index}, args = {arguments}") @DisplayName("사용자 생성 - 성공") @ParameterizedTest(name = "{displayName} {index}, args = {arguments}") @ValueSource(strings = {"ㅁㅇㄹㅁㅇㄹ", "ㅓㅓㅓㅓ", "adfdf", "검프", "검프23213"}) void save(String name) { ... } 테스트 출력시 위와 같이 나오며, "반복 테스트의 이름, 실행 번호, 파라미터"와 같은 형식으로 나오게 했어요. .. 2021. 10. 20.
[Java] Java7과 Java8의 특징 정리 Java7의 특징 Try-with-resources 지원 다이아몬드 연산자를 활용한 Type Reference(타입 추론)지원 다중 Exception Catching 숫자 리터럴에서 언더스코어(underscore) 지원 Switch문에서 String 객체 사용가능 @SafeVarargs 지원 Java8의 특징 Heap Permanent Generation 제거 Interface Default and Static Methods Functional interfaces Lambda expressions Method References Date and time API 지원 Optional 지원 Stream API Collections Parallel Array Sorting (배열 정렬의 병렬처리) Bas.. 2021. 9. 18.
[Java] 해시 함수(Hash Function)란? 해시 함수는 임의의 길이를 갖는 메시지를 입력받아 고정된 길이의 해시값을 출력하는 함수예요. 저장된 자료의 양에 상관없이 원소 하나를 저장하고 검색하는 것을 상수 시간에 가능하게 하기 위해 해시 테이블이 나왔어요. Hash 함수 임의의 길이의 데이터를 고정된 길이릐 데이터로 매핑하는 함수예요. h(x) = x mod 13 위와 같은 계산값을 좋은 해시 함수의 조건 계산이 간단해야 함. 입력 원소가 해시 테이블 전체에 고루 저장되어야 함. (해시 충돌을 막아야 한다는 말이에요) 위에서 정의한 함수에서 7과 20의 값을 입력하면 같이 7이라는 출력값이 나와요. 이때 해시 충돌이라 얘기해요 해시 충돌 해결 체이닝 같은 주소로 해싱되는 원소들을 모두 하나의 연결 리스트에 매달아서 관리, 원소를 검색할 때는 해당.. 2021. 9. 14.
[Java] Json Data를 리스트로 변환하자 with Jackson 나라별 백신 접종률 데이터를 JSON으로 가져왔는데, 데이터양이 엄청나게 무시무시해요. (현재 기준 약 3만 개) 또한 JSON Data를 자세히 보면 컬렉션 안에 컬렉션이 있다는 것을 확인할 수 있어요. 저는 이 많은 데이터 중 오직 country 필드의 값이 World인 데이터만 가져오려고 해요. 어떻게 해야 할까요? [ { "country": "Afghanistan", "iso_code": "AFG", "data": [ { "date": "2021-02-22", "total_vaccinations": 0, "people_vaccinated": 0, "total_vaccinations_per_hundred": 0.0, "people_vaccinated_per_hundred": 0.0 }, { "dat.. 2021. 8. 20.
[Java] Call by value? 자바에서는 모두 Call/Pass by value. 자바가 Call by Reference가 아니라는 사실에 적잖이 충격이었던 경험이 있어요. 제게 Call by Value라고 확신을 하게 해줬던 문서들을 첨부해요. 우선 래퍼런스의 끝판왕 oracle docs를 확인해볼게요 https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html 문서에서 프리미티브 타입의 인자 잔달에 대해 확인해볼 수 있어요. "Passing Primitive Data Type Arguments" int와 double와 같은 프리미티브 타입은 메서드 인자(argument)에 값으로 전달된다고 해요.(이는 call-by-value, pass-by-value로 불려요) 전달될 .. 2021. 4. 28.
[Java] java.util.Collections 주요 메소드 정리 설명에 앞서, 컬렉션의 중복되는 의미들을 살펴볼게요 컬렉션의 중복되는 의미들 1.collection(소문자 c): 객체가 저장되고 반복되는 자료 구조를 나타냅니다. 2.Collection(대문자 C): Set, List, Queue가 상속받는 java.util.Collection 인터페이스입니다. ( 이는 상속입니다. 구현이 아니라. 즉, Collection를 직접 구현한 것은 없습니다. ) 3.Collections(대문자 C, s로 끝남): collections에 사용할 정적 유틸리티 메소드의 모음이 있는 java.util.Collections 클래스입니다. 1, 2에 관련된 내용은 아래 포스팅에서 다뤘어요. [Java] 컬렉션 프레임워크(Collections Framework) 이번 포스팅에서 살펴 .. 2021. 4. 10.
[Java] Arrays.asList() vs Collections.singletonList() java.util.Colletions애는 컬렉션 프레임워크 타입의 객체에 대한 객체생성, 정렬, 병합, 검색 등의 알고리즘을 구현한 메소드가 정의되어 있어요. 저는 그중 Colltions.singletonList()를 사용해보았어요. 기술설명 java.util.Colletions에는 아래와 같이 메소드가 정의되어있는데요 public static List singletonList(T o) { return new SingletonList(o); } 전달인자로 들어온 객체만 포함하는 불변의 리스트를 반환하는 메소드예요. 예제 이 기술을 사용하기 전에는 CarNames carNames = CarNames.of(Arrays.asList(new CarName("pobi"))); 위와 같이 사용했는데 이후엔 CarN.. 2021. 4. 9.