안드로이드 앱 개발기 #38 - 정렬 사용 방법도 알아두면 좋겠습니다
시작하며...
때로는 서버로부터 받아온 배열이나 리스트를 특정 데이터를 기준으로 오름차 또는 내림차순으로 정렬을 해야 할 때가 있습니다. 컨테이너별 정렬 방법을 알아두면 앞으로 도움이 되지 않을까 해서 오늘 포스트로 작성해 봅니다.
기본 데이터 타입 원소들을 갖는 배열 정렬
- 오름차순: 배열의 sorted() 메소드 호출
- 내림차순: sorted()에 이어 연속으로 reversed() 메소드 호출
기본 데이터 타입 원소들을 갖는 리스트 정렬
- 변경 불가 리스트(immutable list): 배열과 방법 동일
- 변경 가능 리스트(mutable list)
- 오름차순: 리스트의 sort() 메소드 호출
- 내림차순: 리스트의 sort() 메소드 호출 후 리스트의 reverse() 메소드 호출
int 타입 원소들을 갖는 배열, 리스트 정렬 예제 코드
import kotlinx.coroutines.*
fun main() {
println("start\n")
val sortedIntArray = arrayOf(1, 100, 50, 25, 75).sorted()
println("Sorted int array: ${sortedIntArray}")
val reverseSortedIntArray = arrayOf(1, 100, 50, 25, 75).sorted().reversed()
println("Reverse sorted int array: ${reverseSortedIntArray}")
val sortedIntList = listOf(1, 100, 50, 25, 75).sorted()
println("Sorted int list: ${sortedIntList}")
val reverseSortedIntList = listOf(1, 100, 50, 25, 75).sorted().reversed()
println("Reverse sorted int list: ${reverseSortedIntList}")
println("----------------------------------------------------------------")
val sortedIntMutableList = mutableListOf(1, 100, 50, 25, 75).sort()
println("Sorted int mutable list: ${sortedIntList}")
val reverseSortedIntMutableList = mutableListOf(1, 100, 50, 25, 75).apply {
sort()
reverse()
}
println("Reverse sorted int mutable list: ${reverseSortedIntMutableList}")
println("\n\nend")
}
예제 코드 실행 결과
start
Sorted int array: [1, 25, 50, 75, 100]
Reverse sorted int array: [100, 75, 50, 25, 1]
Sorted int list: [1, 25, 50, 75, 100]
Reverse sorted int list: [100, 75, 50, 25, 1]
----------------------------------------------------------------
Sorted int mutable list: [1, 25, 50, 75, 100]
Reverse sorted int mutable list: [100, 75, 50, 25, 1]
end
지난 안드로이드 앱 개발기
- #37 - 인터페이스를 자바 언어로 정의하는 이유
- #36 - 하이브리드 앱 만들면서 웹뷰 관련 구현해야 할 것들
- #35 - 코루틴 학습하면서 추가로 알아야 하는 것들
- #34 - 맥북에어로 안드로이드 앱 개발은 무리인가...?
- #33 - build.gradle.kts 파일 수정 후 발생한 빌드 오류 AAPT: error: resource android:attr/lStar not found
- #32 - 가독성 증진을 위한 확장 함수 사용
- #31 - RxJava2 사용하며 만난 NullPointerException: The mapper function returned a null value.
- #30 - 나이트 모드를 고려하지 않아 메인 화면 시작시 발생한 IllegalStateException
- #29 - 잊고 있었던 앱 재시작 샘플 코드
- #28 - 문자열 리소스 파일 strings.xml 어떻게 작성하면 좋을까?
- #27 - 클린 아키텍처에서 domain 모듈
- #26 - 클린 아키텍처 구현을 위한 모듈 구성
- #25 - 스팀 관련 샘플 코드 만들면서 잘못한 점
- #24 - 시작 화면 구성 요소 식별하기
- #23 - 프로젝트 초기 화면 구성부터 대략적으로...
- #22 - Kotlin 코드로 JavaScript 코드를 실행할 수 있을까?
- #21 - 실습 도중 발생한 오류: A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
- #20 - 클립보드에 텍스트 복사하는 함수 만들어 보기 (Kotlin)
- #19 - 데이터 바인딩 적용했으나 UI 자동 업데이트 되지 않는 문제
- #18 - 에뮬레이터에서 토스트 안 보이는 문제 (1)
- #17 - 유닛 테스트를 실행할 수 없는 문제 해결
- #16 - 잘 되던 유닛 테스트를 실행할 수 없는 문제
- #15 - 앱 재시작 코드
- #14 - Fragment 사용시 간혹 발생할 수 있는 Fragment not attached to Activity 문제
- #13 - Retrofit2 활용 서버로부터 받을 데이터 유형 JsonElement (JSONObject 사용 불가)
- #12 - Glide 활용하여 이미지 다운로드 받는 코드
- #11 - 처리할 수 없는 예외/크래쉬 발생시 앱 재시작하기
- #10 - 안드로이드 스튜디오 업그레이드 후 단축키가 안되면? (맥북)
- #9 - LiveData 객체에 동일 데이터 설정하면 observer 실행되는지 확인 목적의 샘플 프로젝트
- #8 - 안드로이드 스튜디오에서 빌드시 발생하는 Build Tools revision 31.0.0 오류
- #7 - 'UGC(사용자 생성 콘텐츠) 정책 미준수'로 심사 거절
- #6 - 뷰에 역마진 적용 불가시 translationX, translationY 속성 사용하기
- #5 - 프로젝트 생성 후 빌드시 발생 오류: The minCompileSdk (31) specified in a dependency's AAR metadata
- #4 - 프로젝트 생성 후 빌드시 발생 오류: The minCompileSdk (31) specified in a dependency's AAR metadata
- #3 - 무한 롤링 배너 만드는 법을 찾았으나, 높이를 wrap_content로 지정이 안 먹히는 문제점이...
- #2 - setContentView 메소드의 파라메터를 변경하지 않아서 발생한 화면 오류
- #1 - 페이스북 로그인 연동시 발생했던 문제들
Posted through the AVLE Dapp (https://avle.io)
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Upvoted! Thank you for supporting witness @jswit.