공부공부

공부공부-230516

nayoon 2023. 5. 16. 21:37

IntStream range

https://m.blog.naver.com/ding-dong/221386518751

 

range(1, 10) -> 1 ~ 9까지

rangeClosed(1, 10) -> 1 ~ 10까지

 

위의 블로그에서 이야기해주길

- IntStream을 잘쓰면 for 반복문과 같은 코드를 간결하게 바꿀 수 있다.

- 하지만 항상 IntStream을 쓰는게 간결한 코드로 이어지는 것은 아니다.

- 상황에 맞게 잘 써보자.

 

리스트 내 중복 요소 체크

https://doing7.tistory.com/145

 

Stream을 이용한 중복 체크 시, distinct()를 사용해서 중복을 없애고 count()로 개수를 체크해서 중복여부를 확인한다.

 

List<Integer> arr의 중복 요소 체크 시,

 

arr.size() 와 arr.stream.distinct().count() 를 이용해서 중복이 있는지를 체크한다.

 

Set을 이용할 수도 있고, 이중 for문을 통해 하나하나 확인할 수도 있다.

 

Set<Integer> set = new HashSet<>(arr);

 

위와 같이 Set 생성 시 ArrayList를 생성자에 넣으면 중복을 제거한 Set이 만들어진다.

 

 

Java 네이밍 규칙

https://shlee0882.tistory.com/129

 

_ (언더바) 사용 금지

인스턴스 변수는 CamelCase

static final 변수는 Upper Camel Case

 

 

saveXXXX는 여러 건의 데이터를 삭제, 변경, 생성 하는 경우 사용

 

System.out.println 테스트 방법

 

테스트 코드에서 print하는 메소드를 실행해본다.

출력하고자 하는대로 잘 출력되는지 확인한다.

 

 

익명클래스

 

말그대로 이름이 없는 클래스

프로그램에서 일시적으로 사용되고 다시는 사용되지 않는 클래스

-> 재사용성이 없고, 확장성을 활용하는 것이 오히려 유지보수 측면에서 불리할때

 

익명 객체 생성 방법

https://limkydev.tistory.com/226

 

 

Optional

NPE = NullPointerException

개발 시 가장 많이 발생하는 예외인데, NPE를 피하려면 null 검사를 해야하지만 null 검사를 해야하는 변수가 많은 경우 코드가 복잡하고 번거로워진다.

 

자바에서는 Optional이라는 클래스를 제공해주는데, null이 설령 있더라도 Optional로 한번 wrapping 되는 거라 NPE가 발생하지 않는다. (NPE 발생을 방지한다)

또한, Optional는 클래스라 null값을 랩핑해서 저장하고 있더라도 다양한 메소드를 제공한다.

 

 

Optional 클래스는 내부에 empty 객체를 static 변수로 가지고 있다.

그래서 여러차례 Optional을 초기화해야하는 경우에도 Optional 클래스 내부에 가지고 있는 empty 객체를 반환함으로써 메모리를 절약한다.

 

Optional.of()

데이터가 절대 null이 아니라면 Optional.of(data)를 사용한다.

data가 null일 경우 NPE가 발생한다.

 

Optional.ofNullable()

데이터가 null일수도 있는 경우 Optional.ofNullable(data)를 사용한다.

orElse나 orElseGet을 사용해서 안전하게 값을 가지고 올 수 있다.

 

 

-> Optional 클래스는 NPE에 대한 부담을 줄이기 위한 Wrapper 클래스라고 보면 된다.

 

orElse, orElseGet 차이

 

orElse(value)

orElseGet(Supplier<? extends T> other);

https://mangkyu.tistory.com/70

https://mangkyu.tistory.com/203

'공부공부' 카테고리의 다른 글

공부공부-230520  (1) 2023.05.20
공부공부-230518  (0) 2023.05.18
공부공부-230508  (0) 2023.05.08
공부공부-230507  (0) 2023.05.07
공부공부-230506  (0) 2023.05.07