일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- redis
- 쿠버네티스
- Kotlin
- OS
- 자바
- K8s
- IntellJ
- 자바 ORM 표준 JPA 프로그래밍
- gradle
- 백준
- Stream
- Java
- mysql
- 스트림
- MSA
- 토비의 스프링 정리
- Real MySQL
- JPA
- 스프링
- 토비의 스프링
- 이스티오
- thread
- Stack
- GC
- jvm
- SpringBoot
- spring
- 보조스트림
- list
- Collection
- Today
- Total
목록Collection (5)
인생을 코딩하다.

ConcurrentHashMap의 내부구조 ConcurrentHashMap이란? ConcurrentHashMap은 Java 1.5 버전에서 HashTable의 대안으로 소개 되었다. Java 1.5 버전 이전에는 concurrent하고 multi-threaded 를 고려한 map을 구현하려면 HashTable 또는 synchronized map을 사용해야 했다. 왜냐하면 HashMap은 thread-safe 하지 않았기 때문이다. ConcurrentHashMap은 concurrent multi-threaded 환경에서 안정적으로 동작하고 HashTable과 synchronized map 보다 더 나은 성능을 가지고 있다. 그 이유는, ConcurrentHashMap은 map의 일부에만 lock을 거는데 ..

ArrayList add() 동작방식 ArrayList는 내부에서 elementData 배열을 기반으로 구성되어 있다. 생성자를 통해서 직접 element 배열의 capacity 설정이 가능하다. 기본 Capacity는 10이다. ArrayList의 기본 생성자를 사용할 경우 elementData에 EMPTY_ELEMENTDATA (빈 Object 배열)을 할당한다. add()의 내부구조 modCount++로 구조적으로 변경된 횟수를 카운트한다. add(e, elementData, size); 위의 로직을 살펴보자. 두 번째 파라미터는 오브젝트형 배열을 인자로 받고있고, 세 번째 파라미터는 int형 정수(size)를 받고있다. s와 elementDate의 길이를 비교하여 배열의 사이즈를 조정해야 하는지 ..

Map이란 키와 값을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스들을 구현하는데 사용되는 List형태의 조상 Map 인터페이스와 이 구현체들은 Collection에 속하지만 Map은 Collection이 아니다. 왜 그럴까? '엘리먼트들의 그룹' Collection 인터페이스의 기본 개념과 맞지 않는다. Map은 java.util 패키지의 Map이라는 이름의 인터페이스로 선언되어 있고, 구현해 놓은 클래스들도 많이 있다 Map 인터페이스에 선언되어 있는 메소드 리턴 타입 메소드 이름 및 매개 변수 설명 V put(L key, V value) 첫 번째 매개 변수인 키를 갖는, 두 번째 매개변수인 값을 갖는 데이터를 저장한다. void putAll(Map

List는 Collection 인터페이스를 확장하였다. 따라서, 몇몇 추가된 메소드를 제외하고는 Collection에 선언된 메소드와 큰 차이는 없다. Collection을 확장한 인터페이스와 다른 인터페이스와 List 인터페이스의 가장 큰 차이점은 배열처럼 '순서' 가 있다는 것이다. List 인터페이스를 구현한 클래스들중에서 java.util 패키지에서는 ArrayList, Vector, Stack, LinkedList를 많이 사용한다. ArrayList와 Vector 클래스의 사용법은 거의 동일하고 기능도 거의 비슷하다. 이 두 클래스는 "확장 가능한 배열" 이라고 생각하면 된다. 차이점은 Vector은 Thread safe하고, ArrayList는 Thread safe하지 않다. /* Vector..

Collection 인터페이스는 java.util 패키지에 선언되어 있으며, 여러 개의 객체를 하나의 객체에 담아 처리할 때 공통적으로 사용되는 여러 메소드들을 선언해 놓았다. 이중에 유일하게 Map 만이 Collection과 관련 없는 별도의 인터페이스로 선언되어 있다. Collection의 인터페이스는 다음과 같이 선언되어 있다. public interface Collection extends Iterable { Iterable 이라는 인터페이스를 확장하고 있다. Iterable 인터페이스에 선언되어 있는 메서드는 iterator() 메소드 하나가 있다. 더보기 Iterator라는 인터페이스에는 추가 데이터가 있는지 확인하는 hasNext() 메소드, 현재 위치를 다음 요소로 넘기고 그 값을 리턴해주..