{"id":46025,"date":"2022-03-28T17:42:31","date_gmt":"2022-03-28T08:42:31","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=46025"},"modified":"2022-08-09T12:02:16","modified_gmt":"2022-08-09T03:02:16","slug":"%ec%9d%b4%ed%8e%99%ed%8b%b0%eb%b8%8c-%ec%bd%94%ed%8b%80%eb%a6%b0-%ec%9a%94%ec%95%bd-%ed%9a%a8%ec%9c%a8%ec%a0%81%ec%9d%b8-%ec%bb%ac%eb%a0%89%ec%85%98-%ec%b2%98%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=46025","title":{"rendered":"[\uc774\ud399\ud2f0\ube0c \ucf54\ud2c0\ub9b0 \uc694\uc57d] \ud6a8\uc728\uc801\uc778 \uceec\ub809\uc158 \ucc98\ub9ac"},"content":{"rendered":"\n<p>\uceec\ub809\uc158\uc740 \uc911\uc694\ud55c \uac1c\ub150\uc774\uba70, \uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c\ub3c4 \uc77c\ubc18\uc801\uc73c\ub85c RecyclerView, LazyColumn \ub4f1\uc744 \uc0ac\uc6a9\ud560 \ub54c \uceec\ub809\uc158\uc744 \uc0ac\uc6a9\ud558\uac8c \ub41c\ub2e4. \ud604\ub300\uc801\uc778 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\ub294 \ub300\ubd80\ubd84 \uceec\ub809\uc158 \ucc98\ub9ac\ub97c \uad49\uc7a5\ud788 \uc798 \uc9c0\uc6d0\ud574\uc8fc\uba70, \ucf54\ud2c0\ub9b0\ub3c4 \uac15\ub825\ud55c \uceec\ub809\uc158 \ucc98\ub9ac\ub97c \uc9c0\uc6d0\ud55c\ub2e4.<\/p>\n\n\n\n<p>\uceec\ub809\uc158\uc744 \ucc98\ub9ac\ud558\ub294 \ubd80\ubd84\uc758 \ucd5c\uc801\ud654\ub294 \uc131\ub2a5\uc5d0 \ud070 \uc601\ud5a5\uc744 \ubbf8\uce58\ubbc0\ub85c \uad49\uc7a5\ud788 \uc911\uc694\ud558\ub2e4. \uc774\ubc88 \ud3ec\uc2a4\ud305\uc5d0\uc11c\ub294 \ud6a8\uc728\uc801\uc778 \uceec\ub809\uc158 \ucc98\ub9ac\ub97c \ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud558\ub098 \uc774\uc0c1\uc758 \ucc98\ub9ac\ub2e8\uacc4\ub97c \uac00\uc9c4 \uacbd\uc6b0\uc5d0\ub294 \uc2dc\ud000\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub77c<\/h2>\n\n\n\n<p>\ub9ce\uc740 \uc0ac\ub78c\ub4e4\uc774 Iterable\uacfc Sequence\uc758 \ucc28\uc774\ub97c \ubaa8\ub974\uace0 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>interface Iterable&lt;out T&gt; {\n    operator fun iterator(): Iterator&lt;T&gt;\n}\n\ninterface Sequence&lt;out T&gt; {\n    operator fun iterator(): Iterator&lt;T&gt;\n}<\/code><\/pre>\n\n\n\n<p>\ubaa8\uc591\uc0c8\ub294 \ube44\uc2b7\ud558\ub098 Iterable\uacfc Sequence\ub294 \uc644\uc804\ud788 \ub2e4\ub978 \ubaa9\uc801\uc73c\ub85c \uc124\uacc4\ub418\uc5c8\ub2e4.<\/p>\n\n\n\n<ul><li>Iterable : \ucc98\ub9ac \ud568\uc218\ub97c \uc0ac\uc6a9\ud560 \ub54c\ub9c8\ub2e4 \uc5f0\uc0b0\uc774 \uc774\ub8e8\uc5b4\uc838 List\uac00 \ub9cc\ub4e4\uc5b4 \uc9c4\ub2e4.<\/li><li>Sequence : \uc9c0\uc5f0(lazy) \ucc98\ub9ac\uac00 \ud2b9\uc9d5. \uc2dc\ud000\uc2a4 \ucc98\ub9ac \ud568\uc218\ub4e4\uc744 \uc0ac\uc6a9\ud558\uba74 \ub370\ucf54\ub808\uc774\ud130 \ud328\ud134\uc73c\ub85c \uafb8\uba70\uc9c4 \uc0c8\ub85c\uc6b4 \uc2dc\ud000\uc2a4\uac00 \ubc18\ud658\ub41c\ub2e4. \ucd5c\uc885\uc801\uc778 \uacc4\uc0b0\uc740 toList \ub610\ub294 count \ub4f1\uc758 \ucd5c\uc885 \uc5f0\uc0b0\uc774 \uc774\ub8e8\uc5b4\uc9c8 \ub54c \uc218\ud589\ub41c\ub2e4.<\/li><\/ul>\n\n\n\n<p>\uc2dc\ud000\uc2a4\uc758 <strong>\uc9c0\uc5f0\ucc98\ub9ac<\/strong>\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uc7a5\uc810\uc744 \uac16\ub294\ub2e4.<\/p>\n\n\n\n<ul><li>\uc790\uc5f0\uc2a4\ub7ec\uc6b4 \ucc98\ub9ac \uc21c\uc11c\ub97c \uc720\uc9c0\ud55c\ub2e4<\/li><li>\ucd5c\uc18c\ud55c\ub9cc \uc5f0\uc0b0\ud55c\ub2e4.<\/li><li>\ubb34\ud55c \uc2dc\ud000\uc2a4 \ud615\ud0dc\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/li><li>\uac01\uac01\uc758 \ub2e8\uacc4\uc5d0\uc11c \uceec\ub809\uc158\uc744 \ub9cc\ub4e4\uc5b4 \ub0b4\uc9c0 \uc54a\ub294\ub2e4.<\/li><\/ul>\n\n\n\n<p>\uac01\uac01\uc758 \uc7a5\uc810\uc5d0 \ub300\ud574 \ud558\ub098\uc529 \uc54c\uc544\ubcf4\uc790<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc21c\uc11c\uc758 \uc911\uc694\uc131<\/h3>\n\n\n\n<p>iterable\uc740 \uc694\uc18c \uc804\uccb4\ub97c \ub300\uc0c1\uc73c\ub85c \uc5f0\uc0b0\uc744 \ucc28\uadfc\ucc28\uadfc \uc801\uc6a9\ud574 \ub098\uac04\ub2e4. (step by step order \ub610\ub294 eager order\ub77c \ud568)<\/p>\n\n\n\n<p>sequence\ub294 \uc694\uc18c \ud558\ub098\ud558\ub098\uc5d0 \uc9c0\uc815\ud55c \uc5f0\uc0b0\uc744 \ud55c\uaebc\ubc88\uc5d0 \uc801\uc6a9\ud55c\ub2e4. (element-by-element order \ub610\ub294 lazy order\ub77c \ud568)<\/p>\n\n\n<pre class=\"kotlin-code\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nimport kotlinx.coroutines.*\n\nfun main() {\n    sequenceOf(1,2,3)\n\t    .filter { print(&quot;F$it, &quot;); it % 2 == 1}\n        .map { print(&quot;M$it, &quot;); it * 2}\n        .forEach { print(&quot;E$it, &quot;)}\n    \/\/ F1, M1, E2, F2, F3, M3, E6,\n    println(&quot;&quot;)\n    \n    listOf(1,2,3)\n        .filter { print(&quot;F$it, &quot;); it % 2 == 1}\n        .map { print(&quot;M$it, &quot;); it * 2}\n        .forEach { print(&quot;E$it, &quot;)}\n    \/\/ F1, F2, F3, M1, M3, E2, E6,\n\n}\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\ucd5c\uc18c \uc5f0\uc0b0<\/h3>\n\n\n\n<p>Iterable\uc740 \uc911\uac04\uc5f0\uc0b0\uc774\ub77c\ub294 \uac1c\ub150\uc774 \uc5c6\uace0, Sequence\ub294 \uc911\uac04\uc5f0\uc0b0\uc774\ub77c\ub294 \uac1c\ub150\uc774 \uc788\ub2e4. \uadf8\ub807\uae30 \ub54c\ubb38\uc5d0 \uc911\uac04 \ucc98\ub9ac \ub2e8\uacc4\ub97c \ubaa8\ub4e0 \uc694\uc18c\uc5d0 \uc801\uc6a9\ud560 \ud544\uc694\uac00 \uc5c6\ub294 \uacbd\uc6b0\uc5d0 \uc2dc\ud000\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc5f0\uc0b0\ub7c9\uc744 \uc904\uc77c \uc218 \uc788\ub2e4. \ub2e4\uc74c\uc758 \uc608\uc81c\ub97c \ubcf4\uc790.<\/p>\n\n\n<pre class=\"kotlin-code\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nimport kotlinx.coroutines.*\n\nfun main() {\n    (1..10).asSequence()\n\t    .filter { print(&quot;F$it, &quot;); it % 2 == 1}\n        .map { print(&quot;M$it, &quot;); it * 2}\n        .first()\n        \/\/ F1, M1\n\n    println(&quot;&quot;)\n \n    (1..10)\n        .filter { print(&quot;F$it, &quot;); it % 2 == 1}\n        .map { print(&quot;M$it, &quot;); it * 2}\n        .first()\n   \t\t\/\/ F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, M1, M3, M5, M7, M9,\n}\n<\/pre>\n\n\n\n<p>sequence\uc758 \uacbd\uc6b0 \ud544\uc694\ud55c \ub9cc\ud07c\ub9cc \uc5f0\uc0b0\ud558\ub294 \uac83\uc744 \uc54c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ubb34\ud55c \uc2dc\ud000\uc2a4<\/h3>\n\n\n\n<p>generateSequnece \ub610\ub294 sequence\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubb34\ud55c\ud55c \uc2dc\ud000\uc2a4\ub97c \ub9cc\ub4e4\uace0 \ud544\uc694\ud55c \ubd80\ubd84\uae4c\uc9c0\ub9cc \uac12\uc744 \ucd94\ucd9c\ud574\ubcf4\uc790.<\/p>\n\n\n<pre class=\"kotlin-code\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nimport kotlinx.coroutines.*\n\nfun main() {\n\tgenerateSequence(0){ it + 1 } \/\/ \ucd08\uae30\uac12 0\uc744 \ubc1c\ud589\ud55c\ub2e4. \ubc1c\ud589\ud55c \uc774\uc804\uac12\uc5d0 1\uc744 \ub354\ud574 \uacc4\uc18d \uac12\uc744 \ubc1c\ud589\n\t\t.map { it * 2 }\n        .take(5) \/\/ 5\uac1c\ub9cc \ucde8\ud568\n        .forEach { print(&quot;$it, &quot;)} \/\/ 0, 2, 4, 6, 8,\n}\n<\/pre>\n\n\n<pre class=\"kotlin-code\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nimport kotlinx.coroutines.*\n\n\/\/ \ud53c\ubcf4\ub098\uce58 \uc218\uc5f4 \ucd9c\ub825\nfun main() {\n    val fibonacci:Sequence&lt;Int&gt; = sequence{\n        yield(1)\n        var current = 1\n        var prev = 1\n        while(true){\n            yield(current)\n            val temp = prev\n            prev = current\n            current += temp\n        }\n    }\n    print(fibonacci.take(10).toList()) \/\/ [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]\n}\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\uac01\uac01\uc758 \ub2e8\uacc4\uc5d0\uc11c \uceec\ub809\uc158\uc744 \ub9cc\ub4e4\uc5b4 \ub0b4\uc9c0 \uc54a\uc74c<\/h3>\n\n\n\n<p>\ud45c\uc900 \uceec\ub809\uc158 \ucc98\ub9ac \ud568\uc218\ub294 \uac01\uac01\uc758 \ub2e8\uacc4\uc5d0\uc11c \uc0c8\ub85c\uc6b4 \uceec\ub809\uc158\uc744 \ub9cc\ub4e4\uc5b4 \ub0b8\ub2e4. \ub300\ubd80\ubd84 List\uc774\uba70 \uc774\ub97c \ud65c\uc6a9\ud558\uac70\ub098 \uc800\uc7a5\ud558\ub294 \uac83\uc740 \uceec\ub809\uc158\uc758 \uc7a5\uc810\uc774\uc9c0\ub9cc, \uba54\ubaa8\ub9ac\ub97c \ucc28\uc9c0 \ud558\ub294 \uac83\uc740 \ub2e8\uc810\uc774 \ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>numbers\n    .filter { ... } \/\/ \uceec\ub809\uc158 \uc0dd\uc1311\n    .map { ... } \/\/ \uceec\ub809\uc158 \uc0dd\uc1312\n    .sum() \/\/ \uc804\uccb4\uc801\uc73c\ub85c 2\uac1c\uc758 \uceec\ub809\uc158\uc774 \uc0dd\uc131 \ub418\uc5c8\uc74c.\n\nnumbers.<strong>asSequence()<\/strong>\n    .filter { ... }\n    .map { ... }\n    .sum()  \/\/ \uceec\ub809\uc158\uc774 \uc0dd\uc131\ub418\uc9c0 \uc54a\uc558\uc74c.\n     <\/code><\/pre>\n\n\n\n<p>\ubb34\uac70\uc6b4 \uceec\ub809\uc158\uc744 \ucc98\ub9ac\ud560 \ub54c\ub294 \ud070 \ube44\uc6a9\uc774 \ubc1c\uc0dd\ud55c\ub2e4. \ud070 \ud30c\uc77c\uc744 \ub300\uc0c1\uc73c\ub85c \uc77c\ubc18\uc801\uc778 \uceec\ub809\uc158 \ucc98\ub9ac\ub97c \ud558\uba74 OutOfMemory\uc5d0 \uc9c1\uba74\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \ud070 \ud30c\uc77c\uc744 \ub300\uc0c1\uc73c\ub85c \uceec\ub809\uc158 \ucc98\ub9ac\ub97c \ud558\ub294 \uacbd\uc6b0\nFile(\"Test.txt\").<strong>readLines()<\/strong>\n    .count()\n    .let(::println)\n\n\/\/ useLines\ub97c \uc0ac\uc6a9\ud558\uba74 \uba54\ubaa8\ub9ac \uc808\uc57d \ubc0f \uc131\ub2a5\uc744 \ud5a5\uc0c1\uc2dc\ud0ac \uc218 \uc788\ub2e4.\nFile(\"Test.txt).useLines { lines:Sequence&lt;String&gt; -&gt; \n    .count()\n    .let { println(it) }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\uc2dc\ud000\uc2a4\uac00 \ube60\ub974\uc9c0 \uc54a\uc740 \ucf00\uc774\uc2a4<\/h3>\n\n\n\n<p>\b\uc804\uccb4 \uceec\ub809\uc158\uc744 \ub300\uc0c1\uc73c\ub85c \ucc98\ub9ac\ud574\uc57c \ud558\ub294 \uc5f0\uc0b0\uc740 \uc2dc\ud000\uc2a4\ub97c \uc0ac\uc6a9\ud574\ub3c4 \ube60\ub974\uc9c0 \uc54a\ub2e4. \uc77c\ub840\ub85c \ucf54\ud2c0\ub9b0\uc758 sorted \ud568\uc218\ub294 Sequence\ub97c List\ub85c \ubcc0\ud658\ud55c \ub4a4\uc5d0 \uc790\ubc14 stdlib\uc758 sort\ub97c \uc0ac\uc6a9\ud574\uc11c \ucc98\ub9ac\ud55c\ub2e4. \uc774\ub7ec\ud55c \ubcc0\ud658\uacfc\uc815\ub54c\ubb38\uc5d0 \uc2dc\ud000\uc2a4\uac00 \uceec\ub809\uc158\ubcf4\ub2e4 \ub290\ub824\uc9c4\ub2e4. <\/p>\n\n\n\n<p>\uc5ec\uae30\uae4c\uc9c0\uac00 \ucc45 \ub0b4\uc6a9\uc774 \uadf8\ub807\ub2e4\ub294 \uac83\uc774\uace0, \uc544\ub798 \uc608\uc81c\ub97c \ubcf4\uba74 \uc5ec\uc804\ud788 \uc2dc\ud000\uc2a4\uac00 \ub354 \ube60\ub974\ub2e4. \uc608\uc2dc\ub97c \uc798 \ubabb \ub4e4\uc740\uac74\uc9c0, \uc65c \uc778\uc9c0 \ubaa8\ub974\uaca0\ub2e4. (\uc544\uc2dc\ub294\ubd84\uc740 \ub313\uae00 \ubd80\ud0c1\ub4dc\ub9bd\ub2c8\ub2e4.)<\/p>\n\n\n<pre class=\"kotlin-code\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nimport kotlin.system.measureTimeMillis\nimport kotlinx.coroutines.*\n \nfun main() {\n    val numList1 = List(100_000){it}\n    val numList2 = List(100_000){it}\n \n    val time1 = measureTimeMillis{\n        val sortedList = numList1.sortedDescending()\n    }\n    println(&quot;time1 = $time1&quot;)\n  \n    val time2 = measureTimeMillis{\n        val sortedList = numList2.asSequence().sortedDescending()\n    }\n    println(&quot;time2 = $time2&quot;) \/\/ \ucc45 \ub0b4\uc6a9\ub300\ub85c\ub77c\uba74 \uc774\uac8c \ub354 \ub290\ub824\uc57c \ub418\ub294\ub370 \ub354 \ube60\ub974\ub2e4..\n}\n<\/pre>\n\n\n\n<p>\ucc38\uace0\ub85c \ubb34\ud55c \uc2dc\ud000\uc2a4\ucc98\ub7fc \uc2dc\ud000\uc2a4\uc758 \ub2e4\uc74c \uc694\uc18c\ub97c lazy\ud558\uac8c \uacc4\uc0b0\ud558\ub294 \uacf3\uc5d0\uc11c sorted\ub97c \ud638\ucd9c\ud558\uba74 \uc624\ub958\uac00 \ubc1c\uc0dd\ud55c\ub2e4.<\/p>\n\n\n<pre class=\"kotlin-code\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nimport kotlin.system.measureTimeMillis\nimport kotlinx.coroutines.*\n \nfun main() {\n    val list1 = generateSequence(0) { it + 1 }.take(10).sorted().toList()\n    print(list1) \/\/[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n    val list2 = generateSequence(0) { it + 1 }.sorted().take(10).toList() \/\/ OutOfMemoryError \ubc1c\uc0dd\n    print(list2)\n}\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\uc790\ubc14 \uc2a4\ud2b8\ub9bc\uc758 \uacbd\uc6b0<\/h3>\n\n\n\n<p>\uc790\ubc148\uc5d0\uc11c\ub294 \uceec\ub809\uc158 \ucc98\ub9ac\ub97c \uc704\ud574 \uc2a4\ud2b8\ub9bc \uae30\ub2a5\uc774 \ucd94\uac00 \ub418\uc5c8\uc73c\uba70, \ucf54\ud2c0\ub9b0\uc758 \uc2dc\ud000\uc2a4\uc640 \ube44\uc2b7\ud55c \ud615\ud0dc\ub85c \ub3d9\uc791\ud55c\ub2e4. \uc790\ubc148\uc758 \uc2a4\ud2b8\ub9bc\ub3c4 lazy\ud558\uac8c \ub3d9\uc791\ud558\uba70 \ub9c8\uc9c0\ub9c9 \ucc98\ub9ac \ub2e8\uacc4\uc5d0\uc11c\ub9cc \uc5f0\uc0b0\uc774 \uc77c\uc5b4\ub09c\ub2e4. \ub2e4\ub9cc \ucf54\ud2c0\ub9b0\uc758 \uc2dc\ud000\uc2a4\uc640\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ucc28\uc774\uc810\uc744 \uac16\ub294\ub2e4.<\/p>\n\n\n\n<ul><li>\ucf54\ud2c0\ub9b0\uc758 \uc2dc\ud000\uc2a4\uac00 \ub354 \ub9ce\uc740 \ucc98\ub9ac \ud568\uc218\ub97c \uac16\uc73c\uba70, \uc0ac\uc6a9\ud558\uae30 \uc27d\ub2e4.<\/li><li>\uc790\ubc14 \uc2a4\ud2b8\ub9bc\uc740 \ubcd1\ub82c \ud568\uc218\ub97c \uc0ac\uc6a9\ud574\uc11c \ubcd1\ub82c \ubaa8\ub4dc\ub85c \uc2e4\ud589\ud560 \uc218 \uc788\ub2e4. \uc774\ub294 \uba40\ud2f0 \ucf54\uc5b4 \ud658\uacbd\uc5d0\uc11c \uad49\uc7a5\ud788 \ud070 \uc131\ub2a5 \ud5a5\uc0c1\uc744 \uac00\uc838\uc628\ub2e4.<\/li><li>\ucf54\ud2c0\ub9b0\uc758 \uc2dc\ud000\uc2a4\ub294 \ub2e4\uc591\ud55c \ud50c\ub7ab\ud3fc\uc5d0\uc11c \ub3d9\uc791\ud55c\ub2e4. \ud558\uc9c0\ub9cc \uc790\ubc14 \uc2a4\ud2b8\ub9bc\uc740 \ucf54\ud2c0\ub9b0\/JVM\uc5d0\uc11c\ub9cc \ub3d9\uc791\ud55c\ub2e4.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ucf54\ud2c0\ub9b0 \uc2dc\ud000\uc2a4 \ub514\ubc84\uae45<\/h3>\n\n\n\n<p>\uc790\ubc14 \uc2a4\ud2b8\ub9bc\uc740 &#8216;Java Stream Debugger&#8217;\ub77c\ub294 \ud50c\ub7ec\uadf8\uc778\uc73c\ub85c \ub514\ubc84\uae45\uc744 \ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p>\ucf54\ud2c0\ub9b0 \uc2dc\ud000\uc2a4\ub294 &#8216;Kotlin Sequence Debugger&#8217;\ub77c\ub294 \ud50c\ub7ec\uadf8\uc778\uc73c\ub85c \ub514\ubc84\uae45\uc744 \ud560 \uc218 \uc788\ub2e4. \ucc38\uace0\ub85c \ud604\uc7ac \uc774 \ud50c\ub7ec\uadf8\uc778\uc740 &#8216;Kotlin&#8217; \ud50c\ub7ec\uadf8\uc778\uc5d0 \ud1b5\ud569 \ub418\uc5b4 \uc788\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uceec\ub809\uc158 \ub2e8\uacc4\uc218\ub97c \uc81c\ud55c\ud558\uc790<\/h2>\n\n\n\n<p>\ubaa8\ub4e0 \uceec\ub809\uc158 \ucc98\ub9ac \uba54\uc11c\ub4dc\ub294 \ube44\uc6a9\uc774 \ub9ce\uc774 \ub4e0\ub2e4. \ub530\ub77c\uc11c \uc801\uc808\ud55c \uba54\uc11c\ub4dc\ub97c \ud65c\uc6a9\ud574\uc11c \uceec\ub809\uc158 \ucc98\ub9ac \ub2e8\uacc4\uc218\ub97c \uc801\uc808\ud558\uac8c \uc81c\ud55c\ud558\ub294 \uac83\uc774 \uc88b\ub2e4. \ub2e4\uc74c \uc608\uc81c\ub97c \uc0b4\ud3b4\ubcf4\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Student(val name: String?)\n\n\/\/ this is working\nfun List&lt;Student&gt;.getNames(): List&lt;String&gt; = this\n    .map { it.name }\n    .filter { it != null }\n    .map { it!! }\n\n\/\/ this is better\nfun List&lt;Student&gt;.getNames(): List&lt;String&gt; = this\n    .map { it.name }\n    .filterNotNull()\n\n\/\/ this is the Best\nfun List&lt;Student&gt;.getNames(): List&lt;String&gt; = this\n    .mapNotNull { it.name }<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\uc131\ub2a5\uc774 \uc911\uc694\ud55c \ubd80\ubd84\uc5d0\ub294 \uae30\ubcf8 \uc790\ub8cc\ud615 \ubc30\uc5f4\uc744 \uc0ac\uc6a9\ud558\uc790<\/h2>\n\n\n\n<p>\ub300\uaddc\ubaa8 \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud560 \ub54c \uae30\ubcf8 \uc790\ub8cc\ud615\uc744 \uc0ac\uc6a9\ud558\uba74, \uc0c1\ub2f9\ud788 \ud070 \ucd5c\uc801\ud654\uac00 \uc774\ub8e8\uc5b4\uc9c4\ub2e4. \uc81c\ub124\ub9ad \ud0c0\uc785(\uc608: List, Set)\uc5d0\ub294 \uae30\ubcf8\uc790\ub8cc\ud615\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc73c\ubbc0\ub85c, \ub798\ud551\ub41c \ud0c0\uc785\uc744 \uc0ac\uc6a9\ud574\uc57c \ud55c\ub2e4. \ud558\uc9c0\ub9cc \uc131\ub2a5\uc774 \uc911\uc694\ud55c \ucf54\ub4dc\ub77c\uba74 IntArray \ubc0f LongArray\uc640 \uac19\uc774 \uae30\ubcf8 \uc790\ub8cc\ud615\uc744 \ud65c\uc6a9\ud558\ub294 \ubc30\uc5f4\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<p>IntArray\uc640 List&lt;Int&gt;\ub97c \ube44\uad50\ud574\ubcf4\uc790. \ub2e8\uc21c\ud788 1,000,000\uac1c\uc758 \uc815\uc218\ub97c \uac16\ub294 \uceec\ub809\uc158\uc744 \ub9cc\ub4e0\ub2e4\uace0 \ud574\ubcf4\uba74, List&lt;Int&gt;\ub294 2,000,006,944\ubc14\uc774\ud2b8\ub97c \ud560\ub2f9\ud55c\ub2e4. \uc774\ub294 5\ubc30\uc815\ub3c4\uc758 \ucc28\uc774\ub2e4. \uc131\ub2a5\uc801\uc73c\ub85c\ub3c4 \ubc30\uc5f4\uc744 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uac00 25%\uc815\ub3c4 \ub354 \ube60\ub974\ub2e4.<\/p>\n\n\n<pre class=\"kotlin-code\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nimport kotlin.system.measureTimeMillis\n\nfun main(){\n    val count = 1_000_000\n    val list:List&lt;Int&gt; = List(count){ it }\n    val array:IntArray = IntArray(count){ it }\n  \n\tval time1 = measureTimeMillis {\n        list.average()\n    }\n    println(&quot;time1 = $time1&quot;) \/\/ time1 = 77\n \n    val time2 = measureTimeMillis {\n        array.average()\n    }\n    println(&quot;time2 = $time2&quot;) \/\/ time2 = 22\n}\n<\/pre>\n\n\n\n<p>\uc77c\ubc18\uc801\uc73c\ub85c\ub294 \ubc30\uc5f4(Array)\ubcf4\ub2e4 List\uc640 Set\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\ub2e4. \ud558\uc9c0\ub9cc \uc131\ub2a5\uc744 \ub192\uc774\uace0, \uba54\ubaa8\ub9ac \uc0ac\uc6a9\ub7c9\uc744 \uc904\uc774\ub824\uba74 Array\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">mutable \uceec\ub809\uc158 \uc0ac\uc6a9\uc744 \uace0\ub824\ud558\uc790<\/h2>\n\n\n\n<p>immutable \uceec\ub809\uc158\ubcf4\ub2e4 mutable \uceec\ub809\uc158\uc774 \uc131\ub2a5\uc801\uc778 \uce21\uba74\uc5d0\uc11c\ub294 \ub354 \ube60\ub974\ub2e4. immutable \uceec\ub809\uc158\uc5d0 \uc694\uc18c\ub97c \ucd94\uac00\ud558\ub824\uba74 \uc0c8\ub85c\uc6b4 \uceec\ub809\uc158\uc744 \ub9cc\ub4e4\uba74\uc11c \uc694\uc18c\ub97c \ucd94\uac00\ud574\uc57c\ud55c\ub2e4. immutable\uc774 \uc0c1\ub300\uc801\uc73c\ub85c \ub290\ub9b0 \uc774\uc720\ub294 \ub0b4\ubd80\uc5d0\uc11c \uceec\ub809\uc158\uc744 \ubcf5\uc81c\ud558\uae30 \ub54c\ubb38\uc774\ub2e4. mutable\uc774 \uadf8\ub7f0 \uba74\uc5d0\uc11c \uc131\ub2a5\uc740 \uc88b\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uceec\ub809\uc158\uc740 \uc911\uc694\ud55c \uac1c\ub150\uc774\uba70, \uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c\ub3c4 \uc77c\ubc18\uc801\uc73c\ub85c RecyclerView, LazyColumn \ub4f1\uc744 \uc0ac\uc6a9\ud560 \ub54c \uceec\ub809\uc158\uc744 \uc0ac\uc6a9\ud558\uac8c \ub41c\ub2e4. \ud604\ub300\uc801\uc778 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\ub294 \ub300\ubd80\ubd84 \uceec\ub809\uc158 \ucc98\ub9ac\ub97c \uad49\uc7a5\ud788 \uc798 \uc9c0\uc6d0\ud574\uc8fc\uba70, \ucf54\ud2c0\ub9b0\ub3c4 \uac15\ub825\ud55c \uceec\ub809\uc158 \ucc98\ub9ac\ub97c \uc9c0\uc6d0\ud55c\ub2e4. \uceec\ub809\uc158\uc744 \ucc98\ub9ac\ud558\ub294 \ubd80\ubd84\uc758 \ucd5c\uc801\ud654\ub294 \uc131\ub2a5\uc5d0 \ud070 \uc601\ud5a5\uc744 \ubbf8\uce58\ubbc0\ub85c \uad49\uc7a5\ud788 \uc911\uc694\ud558\ub2e4. \uc774\ubc88 \ud3ec\uc2a4\ud305\uc5d0\uc11c\ub294 \ud6a8\uc728\uc801\uc778 \uceec\ub809\uc158 \ucc98\ub9ac\ub97c \ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf8\ub2e4. \ud558\ub098 \uc774\uc0c1\uc758 \ucc98\ub9ac\ub2e8\uacc4\ub97c \uac00\uc9c4 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[5],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/46025"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=46025"}],"version-history":[{"count":13,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/46025\/revisions"}],"predecessor-version":[{"id":46207,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/46025\/revisions\/46207"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=46025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=46025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=46025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}