java

JVM/Java

[Java]Collections.emptyList() vs. new instance 어떤 차이가 있을까?

🤔서론 스택오버플로우를 보다가 아하! 싶은 내용이 있길래 정리를 해본다. 리턴을 null로하는 것은 매우매우 위험한 행동이다. 그렇기에 우리는 새 인스턴스를 만들어서 리턴을 시켜줄수도 있고, 라이브러리를 통해 emptyList()를 리턴해줄수도 있다. 둘은 어떤 차이가 있을까? 😆본론 아래 두 방식의 차이를 알아보자. return Collections.emptyList(); return new ArrayList(); 일단 Collections.emptyList()가 뭔지 알면 쉽게 정리할 수 있다. public static final List emptyList() { return (List) EMPTY_LIST; } 이 메서드를 구현하면 각 호출에 대해 별도의 목록 개체를 만들 필요가 없습니다. 이 방법..

JVM/Java

[Java]for문 List를 Null 체크하는 방법

🙄서론 for문을 돌리는 List를 어디선가 받아와서 사용할 때 null인 경우가 있을수도 있기 때문에 예외처리는 필수적으로 해주어야 한다. (물론 NULL이 처음부터 발생하지 않게 해주는 것도 중요하다.) 내가 하던 방식이 비효율적으로 느껴졌고, 다른사람들은 어떻게 null 체크 하는지에 궁금증이 생겨서 알아보게 된 걸 기록해본다. 😉본론 AS-IS 기존 내가 null 체크 했던 방식들 if(productionList != null) { for (String production : productionList) { // 로직구현 } } else { // 예외처리 } if(productionList == null) { return ; // or 예외처리 } for (String production : pr..

JVM/Java

[Java] List Null 체크 하는 방법들

🙄서론 리스트 null을 체크하는 방식이 여러 방법이 있어서 정리할 겸 작성한다. 소개할 List null 체크 방식은 아래와 같다. - xxxxList == null - xxxxList.size() == 0 - xxxxList.isEmpty() - CollectionUtils.isEmpty(xxxxList) 테스트 방식은 2가지로 나눠서 할 예정이다. 1. List가 null일 경우 2. List가 생성된 경우 😀테스트 코드 @Test @DisplayName("nullList체크") void nullListTest() { List nullList = null; assertTrue(); // 코드작성 } @Test @DisplayName("newList체크") void newListTest() { Lis..

JVM/Java

[Java] 자바10부터 나온 var

😉서론 회사 내 모든 프로젝트가 자바8에서 자바11로 올리게 되었다. 그래서 현재 자바8 기준으로 되어 있는 소스코드들이 많았고, 자바 8 이후에 나온 기술들을 하나하나 도입을 준비 중에 있다. 이후 sonarQube(소나큐브) 라는 소스코드 품질을 높여주는 툴을 도입하게 되었고, 여기 이슈에서 var 관련 이슈가 엄청 많이 나왔다. 그래서 도입 전 var가 뭔지 어떻게 쓰면 좋은지에 대해 알아보고 결정해야 하기에 알아보게 되었다. 🤷‍♂️자바8 이전과 자바10 이후 차이점 // 자바8 이전 String message = "Good bye, Java 9"; Map map = new HashMap(); // 자바10 이후 var message = "Hello Java 10"; var idToNameMap ..

JVM/Java

[Java] Optional – orElse() vs orElseGet() 차이점 알고 쓰자.

* 2022.03.01 내용 수정 - orElse() 를 사용하는 경우 추가 - orElse() orElseGet() 작동원리 수정 😉서론 자바 8부터 지원하게 된 optional은 NullPointerException 에 대한 문제를 해결하기 위해 나왔습니다. 하지만 그런데도 null이 발생할 수 있고, null 체크를 해야만 하는 경우가 빈번합니다. 그러므로 null일 시 default 값을 넣어줄 수 있는데 그중에서 orElse()와 orElseGet() 이 존재합니다. 이를 그냥 이것저것 사용할 수도 있지만, 알고 쓰는 것과 모르고 쓰는 것은 천지 차이기 때문에 한 번 정리해보았습니다. 🤔둘의 차이? public T orElse(T other) public T orElseGet(Supplier

JVM/Java

[Java] Map getOrDefault 를 활용하자.

getOrDefault 를 모르기 전까지 방식 1. 일단 get으로 원하는 값을 가져오고, 2. 있는지 없는지 null 체크 하고, 3. null 이면 새로 만들어준다. getOrDefault를 안 이후 1. 가져오고, 없으면 새로 만들어준다. 분명 잘 쓰고 있다고 생각했지만, 내가 모르는 많은 라이브러리등이 존재한다.. 계속 알아갈 때 마다 재밌넹

JVM/Java

[Java] ArrayList 조건 삭제 'removeIf'

서론 arrayList 경우 내가 삭제하고 싶은 애를 삭제하고 싶은 경우 for문을 돌리고, if문을 통해 삭제하는 경우가 있었다. 하지만 자바8부터 생긴 removeIf를 사용하면 람다식을 이용하여 간단하게 삭제할 수 있다. 본론 자바8에 생긴 람다 중 Predicate 를 사용하여 list에서 원하는 애를 삭제하는 방식을 이용하고 있다. 이는 stream에 있는 filter랑 같은 원리이다. 리턴 값은 boolean으로 하나라도 삭제가 되면 true, 삭제가 없으면 false를 반환한다. 예제 위처럼 removeIf를 통해 조건에 맞는 데이터들을 한 번에 정리할 수 있다.

JVM/JPA

[QueryDSL]like, contains 차이

서론 회사에서 자체프레임워크를 사용하다보니 기본으로 제공되는 like와 contains를 잘 사용할 일이 없었다. 그러다 최근에 사용할 일이 있어 like를 사용하게 되었는데, 원했던 어디든 포함이 되는 like가 진행되지 않아 찾아보게 되었다. 본론 둘 다 쿼리가 날라가는 것은 LIKE로 날라가지만 contains는 앞 뒤로 %를 자동으로 붙여주고, ex) %튀김% like는 입력한 그대로 날라간다. ex) 튀김 사용 예 contains : 앞, 중앙, 뒤 상관 없이 문자가 포함이 되는지 확인하고 싶을 때 like : 앞, 중앙, 뒤 원하는 곳에 포함이 되는지 확인하고 싶을 때 직접 %를 붙여서 사용

Hyo Kim
'java' 태그의 글 목록 (4 Page)