자바 8 API에 새로 추가된 기능선언형: 간결하고 가독성 좋음조립 가능: 복잡한 데이터 처리도 파이프라인으로 연결병령화: 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬 처리 가능. 성능이 좋아짐위 코드를 멀티코어 아키텍쳐에서 병렬로 실행 가능한 코드로 만들
filter 메서드Predicate을 인수로 받아 predicate과 일치하는 모든 요소를 포함하는 스트림 반환predicate: boolean을 반환하는 함수 distinct 메서드고유 여부는 스트림에서 만든 객체의 hashCode, equals로 결정됨스트림의 요소
자바8은 세가지 기본형 특화 스트림을 제공한다: IntStream, DoubleStream, LongStream각 인터페이스는 sum, max 등 흔히 사용되는 숫자 관련 리듀싱 연산 수행 메서드를 제공함다시 객체 스트림으로 복원하는 기능도 제공특화 스트림은 오직 박싱
Stream.of임의의 수를 인수로 받음정적 메서드스트림 비우기객체로 스트림을 만드는데, 객체가 null이면 빈 스트림으로 만들어야 한다System.getProperty - 제공된 키에 대응하는 속성이 없으면 null 반환Arrays.stream: 배열을 인수로 받는
collect 메서드에 Collector 인터페이스 구현을 전달한다스트림에 collect를 호출하면 스트림의 요소에 리듀싱 연산이 수행됨collect에서 리듀싱 연산을 이용해 스트림의 각 요소를 방문하면서 Collector가 작업 처리보통 함수를 요소로 변환할 때는 컬
n 이하의 자연수를 소수와 비소수로 분류하기.boxed() : returns a Stream consisting of the elements of this stream, each boxed to an Integer지금까지 발견된 소수 리스트에 접근해 이 값들로 나눠떨어
A program uses a call stack to keep track of method callsCall stackmade up of stack framesone stack frame per method callcontains info about method &
When programmers create a memory in heap and forget to delete it, memory leaks can occur. Consequences of Memory leak reduces amount of available mem
declared inside the body of the methodcan be only used within that methodother methods in class aren't aware of variables' existencecan't be declared
Multiprocessing and multithreading are purposed for better computing power of a system. A system that has more than one or two processors. CPUs are ad
Overloading과 Overriding Overloading Overriding Static Polymorphism과 Dynamic Polymorphism Static Polymorphism Dynamic Polymorphism 추상화와 캡슐화 추상화 캡슐화 프로세
represents a date & time locallyyear, month, day, hour, minute, second, nanoseconduseful for time in local contextrepresents instantaneous point in ti
우선순위큐는 특정 우선순위에 따라 요소들을 저장하는 자료구조다First-In, First-Out 구조로 잘 알려진 큐에다 요소 순서를 우선순위에 의해 지정하는 개념을 추가한다고 볼 수 있다null은 우선순위 기준에 따라 비교할 수 없으니 어찌보면 당연한 말이다요소를 비
해당 글은 Java 17부터 생겨난 sealed에 대한 Oracle의 공식 문서를 참고하여 작성했습니다.Sealed 키워드는 다른 클래스 또는 인터페이스가 해당 클래스 또는 인터페이스를 상속하거나 구현하는 행위를 제한한다. permits 키워드와 함께 사용하여 해당 클
Java는 객체지향 언어다. Java는 객체지향 언어다. 그럼 객체 지향은 무엇인가? Java는 객체 지향을 어떻게 구현하는가? 왜 구현하는가? 객체 (Object) 객체지향 프로그래밍을 이해하려면 클래스(Class)와 객체(Object)가 무엇인지부터 생각해봐야
Java의 SOLID 원칙을 따라 객체지향적으로 프로그래밍하는 것은 좋은 Java 개발자가 되기에 필수적이다. SOLID 원칙이 생소할 수는 있지만, Java로 곧잘 개발하는 사람이라면 이미 원칙에 맞춰 코드를 짜고 있었을 수도 있다. Single Responsibi
형 변환에 대해 파고들면 Covariant, Contravariant, Invariant과 같은 용어들을 쉽게 만날 수 있다. 세 용어 모두 형 변환에 있어 슈퍼타입-서브타입 관계성을 정의한다. A와 B를 타입, f를 형 변환, 그리고 <=을 서브타입 관계성이라
Oracle의 공식 문서를 참고하여 작성한 포스트입니다 Generics란? JDK 5.0부터 생긴 Generics는 특히 Java.util.Collections에서 더 안전한, 컴파일 단에서 보증하는 코드를 짜는데 혁신적이다. 예시로 확인해보자 다음 코드는 Ge
Java의 TreeMap은 Map 인터페이스, NavigableMap 인터페이스와 AbstractMap 클래스를 구현한다Key 값 기준으로 자연적인 순서(오름차순)로 정렬한다Comparator를 도입하여 정렬 기준을 재정의할 수 있다Red-Black 트리 (자가 균형
ArrayDeque ArrayDeque, 즉 Array Double Ended Queue 에 대해 알아보자. 일반적으로 Last-In, First-Out을 구현하여 배열의 끝에서 데이터를 추가하는 큐와 다르게, ArrayDeque는 큐의 양 끝에 데이터를 용이하게 추
알고리즘을 풀면서 long보다 큰 범위를 필요로 하는 문제는 처음 만났다. \[백준 long보다 큰 범위의 정수를 사용하기 위해서 BigInteger 클래스가 존재한다.java.math에서 가져와서 사용할 수 있다.long보다 큰 범위의 값으로 초기화해야 할 때 유용
링크드리스트는 리스트의 구현체로 비순차적인 데이터의 추가 및 삭제에 용이한 자료구조다. 다만, 인덱스 기반 조회는 O(N)의 시간 복잡도를 가진다는 점이 단점이다. 링크드리스트의 .listIterator 메서드를 사용해보자.이 메서드는 int index를 인자로 받아서
스레드 스레드는 프로세스 수행의 병렬 처리를 가능케 하는 작업 단위와도 같습니다. 하나의 프로세스의 커다란 작업을 여러 스레드에 나눠 처리하여 성능을 높일 수 있죠. 스레드는 크게 커널에서 관리하는 커널 레벨 스레드 (KLT, Kernel-Level Thread)와