Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- 기록으로 실력을 쌓자
- Linux
- CKA 기출문제
- CKA
- APM
- kotlin coroutine
- 오블완
- Java
- 정보처리기사 실기
- kotlin
- IntelliJ
- MySQL
- 정보처리기사실기 기출문제
- Spring
- Kubernetes
- PETERICA
- AWS EKS
- kotlin spring
- Pinpoint
- 코틀린 코루틴의 정석
- mysql 튜닝
- CloudWatch
- aws
- AI
- 티스토리챌린지
- 공부
- kotlin querydsl
- minikube
- 정보처리기사 실기 기출문제
- Elasticsearch
Archives
- Today
- Total
피터의 개발이야기
[Kotlin] Entity list에서 id 추출하기 본문
반응형
ㅁ 들어가며
ㅇ Kotlin에서 엔티티 리스트에서 ID만 추출하여 새로운 리스트를 만드는 방법을 정리하였다.
ㅁ 엔티티 예제 코드
// 엔티티 클래스가 다음과 같다고 가정
data class Entity(val id: Long, val name: String)
// 엔티티 리스트가 있다고 가정
val entityList: List<Entity> = listOf(
Entity(1, "First"),
Entity(2, "Second"),
Entity(3, "Third")
)
// ID만 추출하여 새로운 리스트 만들기
val idList: List<Long> = entityList.map { it.id }
// 또는 더 명시적으로 entity 주입받기
val idList: List<Long> = entityList.map { entity -> entity.id }
ㅇ map 함수를 사용하여 각 엔티티에서 ID를 추출한다.
ㅇ 결과는 ID 타입(여기서는 Long)의 리스트이다.
ㅇ 만약 nullable한 ID를 처리해야 하거나, null이 아닌 ID만 추출하고 싶다면 다음과 같이 할 수 있다.
ㅁ NULL이 아닌 리스트만 추출
// ID가 nullable인 경우
data class Entity(val id: Long?, val name: String)
// null이 아닌 ID만 추출
val nonNullIdList: List<Long> = entityList.mapNotNull { it.id }
ㅇ mapNotNull은 null이 아닌 결과만 포함하는 새 리스트를 생성한다.
ㅁ 메모리 최적화
// ArrayList를 직접 사용하여 메모리 할당을 최적화
val idList: List<Long> = ArrayList<Long>(entityList.size).apply {
for (entity in entityList) {
add(entity.id)
}
}
ㅇ 리스트 크기를 미리 알고 있을 때 리스트의 사이지를 지정하여 메모리 할당을 최적화할 수 있다.
반응형
'Programming > Kotlin' 카테고리의 다른 글
[Kotlin] Resilience4j로 서킷브레이커 패턴 구현하기 (2) | 2024.07.24 |
---|---|
[Kotlin] Kotlin Spring에서 API 요청 시 응답 후 비동기 처리, 코루틴 비동기처리 (0) | 2024.07.23 |
[Kotlin] QueryDSL java.lang.NoSuchFieldError: TREATED_PATH (0) | 2024.07.20 |
[Kotlin] Spring에 MapStruct와 Lombok을 함께 사용할 때 isCompleted 필드가 null로 넘어오는 문제 (0) | 2024.07.19 |
[Kotlin] Kotlin으로 Shell 유틸리티 만들기: 파일 복사와 압축 (1) | 2024.07.18 |
Comments