본문 바로가기

Java11

스트림(Stream) - reduce( ) reduce(Identity, Accumulator -> Combiner) Identity – an element that is the initial value of the reduction operation and the default result if the stream is empty Accumulator – a function that takes two parameters: a partial result of the reduction operation and the next element of the stream Combiner – a function used to combine the partial result of the reduction operation when the reduction i.. 2024. 2. 27.
박싱(Boxing) & 언박싱(UnBoxing) 위에서 래퍼 클래스는 값을 포장하여 객체로 만드는 것이라고 했다. 값을 포장하여 객체로 만드는 것 까지는 좋지만, 만일 값을 더하거나 등 변환시켜야 할 필요가 생길 경우 포장을 다시 뜯을 필요가 있다. 이러한 행위를 전문적인 용어로 말하자면, 박싱(Boxing) 과 언박싱(UnBoxing) 이라고 한다. Boxing : 기본 타입의 데이터 → 래퍼 클래스의 인스턴스로 변환 UnBoxing : 래퍼 클래스의 인스턴스에 저장된 값 → 기본 타입의 데이터로 변환 더 자세한 내용은 아래 사이트를 참고하자 https://inpa.tistory.com/entry/JAVA-☕-wrapper-class-Boxing-UnBoxing [Inpa Dev 👨‍💻:티스토리] 아래 코드를 살펴보자. import java.util.. 2024. 2. 22.
[Java 8] Stream의 collect() collect() collector는 Collector 인터페이스를 구현한 것이고, 직접 구현할 수도 있지만, 미리 작성된 것을 사용하기도 한다. Collectors 클래스는 미리 작성된 다양한 collector를 반환하는 static 메서드를 가지고 있다. 구현된 collector를 collect() 메서드의 인자로 넣어 사용한다. collect() 스트림의 최종연산, 매개변수로 컬렉터를 필요로 한다. Collector 인터페이스로 컬렉터는 이를 구현해야 한다. Collectors 클래스로 static 메서드로 미리 구현한 컬렉터를 제공한다. Collectors를 통해 어떤 형태로 변경할 수 있는지에 대해서 알아보자. List givenList = Arrays.asList("a", "bb", "cc",.. 2024. 2. 22.
PriorityQueue란? 자바 PriorityQueue(우선순위 큐)는 자바의 Queue 인터페이스의 구현 클래스입니다. 일반적인 Queue(큐)의 FIFO(First-In-First-Out)를 따르지만 우선 순위에 따라 요소를 정렬하여 우선 순위가 가장 높은 요소 먼저 처리되도록 합니다. 자바 PriorityQueue는 보통 Heap을 이용하여 구현합니다. 데이터를 삽입할 때 우선순위를 기준으로 Max Heap(최대 힙) 혹은 Min Heap(최소 힙)을 구성하고 데이터를 꺼내거나 삭제할 때는 적절한 자리를 찾아 옮기는 방식으로 진행됩니다. Max Heap(최대 힙) : 최대 값이 우선순위인 큐 Min Heap(최소 힙) : 최소 값이 우선순위인 큐 특징 높은 우선순위의 데이터를 먼저 꺼내서 처리합니다. 배열과 달리 크기가 고.. 2024. 2. 21.
HashSet 사용법(개념,특징,사용법) HashSet이란? HashSet은 Set 인터페이스의 구현 클래스입니다. 그렇기에 Set의 성질을 그대로 상속받습니다. HashSet의 특징 1. 객체를 중복해서 저장할 수 없고 하나의 null 값만 저장할 수 있습니다. 2. 저장 순서가 유지되지 않습니다. (만약 요소의 저장 순서를 유지해야 한다면 JDK 1.4부터 제공하는 LinkedHashSet 클래스를 사용) 3. Set 인터페이스를 구현한 클래스로는 HashSet과 TreeSet이 있는데, HashSet의 경우 정렬을 해주지 않고 TreeSet의 경우 자동정렬을 해준다는 차이점이 있습니다. 4. 비선형 구조이기에 순서가 없으며 그렇기에 인덱스도 존재하지 않습니다. 그렇기에 값을 추가하거나 삭제할 때에는 내가 추가 혹은 삭제하고자 하는 값이 S.. 2024. 2. 20.
[Java] ArrayList와 LinkedList의 차이 위 사진을 보면 알 수 있듯 ArrayList는 index가 있고, LinkedList는 각 원소마다 앞,뒤 원소의 위치값을 가지고 있다. 이러한 각각의 특징은 조회, 삽입, 삭제시에 성능의 차이를 발생시킨다. ArrayList ArrayList는 기본적으로 배열을 사용한다. 하지만 일반 배열과 차이점이 존재한다. 일반 배열은 처음에 메모리를 할당할 때 크기를 지정해주어야 하지만, ArrayList는 크기를 지정하지 않고 동적으로 값을 삽입하고 삭제할 수 있다. 조회 ArrayList는 각 데이터의 index를 가지고 있고 무작위 접근이 가능하기 때문에, 해당 index의 데이터를 한번에 가져올 수 있다. 데이터 삽입과 삭제 데이터의 삽입과 삭제시 ArrayList는 그만큼 위치를 맞춰주어야 한다. 위의.. 2024. 2. 18.