본문 바로가기

개발/자바12

기본형 특화 스트림(IntStream, LongStream, DoubleStream) Stream을 사용하다보면 mapToInt(), mapToLong() 과 같은 메서드를 본 적이 있을 것이다. 필자는 map() 과 비교했을 때 결과적으로 다른 것은 없지만, 각 타입에 대한 연산 처리 과정에서 효율적일 것이라는 뇌피셜을 가지고 사용하고 있었다. 정말 그럴까? 🤔 예제를 통해서 살펴보자. 기본형 특화 스트림이 뭘까? Stream에서 mapToInt(), mapToLong(), mapToDouble() 을 호출하면 각각 IntStream, LongStream , DoubleStream 이 반환된다. 해당 Stream들을 모두 기본형 특화 스트림이라고 부른다. 말 그대로 기본형, primitive type에 특화된 Stream 이라는 의미이다. 앞서서 뇌피셜로 각 타입에 대한 연산 처리 과정.. 2022. 10. 9.
함수형 인터페이스 (Functional Interface) 함수형 인터페이스란? 오직 하나의 추상메서드만 갖는 인터페이스 디폴트 메소드가 있더라도 추상메서드가 오직 하나면 함수형 인터페이스이다. (예시) public interface CustomFuntionalInterface { int customFunction(int a, int b); } @FunctionalInterface 함수형 인터페이스임을 나타내는 어노테이션이다. @FunctionalInterface로 인터페이스를 선언했지만 실제로 함수형 인터페이스가 아니면 컴파일러가 예외를 발생시킨다. 추상 메소드가 1개 이상이라면 컴파일 에러가 발생하는 것이다. @FunctionalInterface public interface Consumer { void accept(T t); } 함수형 인터페이스의 종류 아.. 2022. 3. 30.
추상화란? 추상화란? = 일반화 시킨다. 공식화 시킨다. 단순하게 만든다. 어떤 양상, 세부사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법이다. (예시) 커피가루를 녹인다. 티백을 우린다. ⇒ x를 y한다. 추상클래스 적용 사례 public abstract class Beverage() { protected void prepare() { boilWater(); brew(); pourInCup(); } private void boilWater() { // ... } private void brew() { // ... } private void pourInCup() { // ... } } public class Coffee extends Bever.. 2022. 3. 17.
compareTo()가 0을 반환하면 어떤 순서로 정렬되나? 우테코 2주차에서 학습로그로 compareTo() 파헤치기를 작성했다. 페어와 학습로그 말하기에서 해당 내용을 이야기하고 페어와의 질문 시간을 가졌다. 페어가 'compareTo()로 정렬을 할 때 비교한 값이 같으면 어떤 순서로 지정이 되는지' 질문을 하였지만 대답하지 못했다. 🥲 페어가 말하길, 비교한 값이 같으면 리스트에 삽입된 순서로 지정되지 않을까라고 했지만, 확실히 하는 것이 좋을 것 같아 이렇게 글을 작성해본다. 아래와 같은 객체가 있다고 치자. public class RacingCar implements Comparable { private final String name; private final int position; public RacingCar(final String name, f.. 2022. 2. 19.