투케이2K

328. (kotlin/코틀린) [유틸 파일] : getSubList : List 배열 부분 데이터 반환 수행 본문

Kotlin

328. (kotlin/코틀린) [유틸 파일] : getSubList : List 배열 부분 데이터 반환 수행

투케이2K 2023. 7. 1. 12:03
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [RETURN] getSubList : List 배열 부분 데이터 반환 수행
        // -----------------------------------------------------------------------------------------
        fun getSubList(list: ArrayList<Any>?, start: Int, end: Int): ArrayList<Any>? {

            /**
             * // -----------------------------------------
             * [getSubList 메소드 설명]
             * // -----------------------------------------
             * 1. List 배열 부분 데이터 반환 수행
             * // -----------------------------------------
             * 2. 호출 방식 :
             *
             * var list = ArrayList<Any>()
             * list.add(0) // [0]
             * list.add(1) // [1]
             * list.add(2) // [2]
             * list.add(3) // [3]
             * list.add(4) // [4]
             * list.add(5) // [5]
             *
             * C_Util.getSubList(list, 1, 3) // [1부터 3까지 반환]
             *
             * // -----------------------------------------
             * 3. 리턴 데이터 :
             *
             * [1, 2, 3]
             * // -----------------------------------------
             */


            // [리턴 변수 선언]
            var returnData: ArrayList<Any>? = null
            var M_LOG = ""


            // [로직 처리 실시]
            try {
                if (list != null && list.size > 0 && list.isEmpty() == false) {
                    if (start < 0 || end < 0) { // [음수 값 체크]
                        M_LOG = "[ERROR] : Range Check Error (start or end < 0)"
                    } else {

                        M_LOG = "SUCCESS : ArrayList Sub Data"

                        if (end >= start) { // [end >= start 크기 비교]

                            returnData = ArrayList<Any>()

                            if (end >= list.size - 1) { // [end >= list size 크기 비교 / 배열 사이즈 보다 거나 같은 경우]

                                for (i in list.indices) {
                                    try {
                                        if (i >= start) {
                                            returnData.add(list[i])
                                        }
                                    } catch (e: Exception) {
                                    }
                                }

                            } else { // [배열 사이즈 보다 작은 경우]

                                for (i in list.indices) {
                                    try {
                                        if (i >= start && i <= end) {
                                            returnData.add(list[i])
                                        }
                                    } catch (e: Exception) {
                                    }
                                }

                            }

                        } else {
                            M_LOG = "[ERROR] : Range Check Error (end >= start / false)"
                        }
                    }
                } else {
                    M_LOG = "[ERROR] : Input List Is Null"
                }

            } catch (e: Exception) {
                e.printStackTrace()
                M_LOG = "[EXCEPTION] : " + e.message.toString()
            }


            // [로그 출력 실시]
            //*
            // ===============================================================
            S_Log._D_("List 배열 부분 데이터 반환 수행", arrayOf(
                "INPUT [LIST] :: " + list.toString(),
                "INPUT [RANGE] :: $start ~ $end",
                "M_LOG :: $M_LOG",
                "RETURN :: " + returnData.toString()
            ))
            // ===============================================================
            // */


            // [리턴 반환 실시]
            return returnData
        }
 

[결과 출력]

 

D///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.kotlinproject.C_Util$Companion.getSubList(C_Util.kt:5354)]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: List 배열 부분 데이터 반환 수행]
I/: ----------------------------------------------------
I/: [LOG :: INPUT [LIST] :: [0, 1, 2, 3, 4, 5]]
I/: ----------------------------------------------------
I/: [LOG :: INPUT [RANGE] :: 1 ~ 3]
I/: ----------------------------------------------------
I/: [LOG :: M_LOG :: SUCCESS : ArrayList Sub Data]
I/: ----------------------------------------------------
I/: [LOG :: RETURN :: [1, 2, 3]]
D///===========//: ================================================

 

반응형
Comments