Equality | Kotlin
kotlinlang.org
๊ณต์๋ฌธ์์ ๋ฐ๋ฅด๋ฉด kotlin์๋ ๋ ๊ฐ์ง ํ์ ์ Equality๊ฐ ์กด์ฌํฉ๋๋ค.
Structural equality์ Referential equality์ธ๋ฐ์.
๊ฐ๋จํ ๋งํ์๋ฉด Structural equality๋ ๊ฐ์ ๋น๊ตํ๋ ๊ฒ์ด๊ณ , Referential equality๋ ์ฃผ์๊ฐ ๋น๊ต๋ฅผ ํตํด ๋์ผํ ๊ฐ์ฒด์ธ์ง๋ฅผ ๋น๊ตํ๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์์ ๋๋ฑ์ฑ๊ณผ ๋์ผ์ฑ์ ๋ํด ์์๋ด ์๋ค.
๋์ผ์ฑ identity
๋์ผํ๋ค๋ ๋ป์ผ๋ก, ์ฃผ์ด์ง ๋ ๊ฐ์ ๊ฐ์ฒด๊ฐ ์์ ํ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๋ปํ๋ค.
์ฆ, ์ฃผ์๊ฐ์ ๋น๊ตํ์ฌ ๋์ผํ ์ฃผ์์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํฌ ๊ฒฝ์ฐ true, ์๋ ๊ฒฝ์ฐ false์ด๋ค.
๋๋ฑ์ฑ equality
๋๋ฑํ๋ค๋ ๋ป์ผ๋ก, ์ฃผ์ด์ง ๋ ๊ฐ์ ๊ฐ์ฒด๊ฐ ๋๋ฑํ ์ ๋ณด๋ฅผ ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ๋ปํ๋ค.
์ฃผ์๊ฐ์ด ๋ฌ๋ผ๋ ์ ์ฅ๋ ๊ฐ์ด ๋๋ฑํ ์ ์์ผ๋ฏ๋ก, ๋์ผ์ฑ์ด ์ฑ๋ฆฝํ์ง ์์๋ ๋๋ฑ์ฑ์ด ์ฑ๋ฆฝํ ์ ์๋ค.
๊ทธ๋ ์ต๋๋ค.
Kotlin์์๋ Structural equality์ ๋ํ ๋น๊ต๋ == ์ฐ์ฐ์๋ฅผ ์ด์ฉํ๊ณ , Referential equality์ ๋ํ ๋น๊ต๋ === ์ฐ์ฐ์๋ฅผ ์ด์ฉํฉ๋๋ค.
== ์ฐ์ฐ์๋ ์ฐธ์กฐ ํ์ ์ ๋น๊ตํ ๋ ๋ด๋ถ์ ์ผ๋ก .equals()๋ฅผ ํธ์ถํฉ๋๋ค.
์ด๋ ์ด equals()์ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ 5๊ฐ์ง requirements๋ฅผ ๋ง์กฑํด์ผ ํฉ๋๋ค.
- Reflexive: for any non-null value x, x.equals(x) should return true.
- Symmetric: for any non-null values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
- Transitive: for any non-null values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
- Consistent: for any non-null values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
- Never equal to null: for any non-null value x, x.equals(null) should return false.
๊ทธ๋ฆฌ๊ณ Comparable<...> ์ธํฐํ์ด์ค๋ก ์ ์๋๋ comparison ๋ฐฉ์์ ์ ํ!!! ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
์ฐธ๊ณ ๋ก === ์ฐ์ฐ์๋ ๋ฐํ์์ Int์ ๊ฐ์, primitive types๋ก ํํ๋๋ ๊ฐ์ ํํ์ฌ ==์ ๋๊ฐ์ด ๋์ํฉ๋๋ค.
์ฆ, ์๋ ๋ ์ฝ๋๋ ๊ฐ์ต๋๋ค.
a == b
a?.equals(b) ?: (b === null)
์ด .equals()๊ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์๋ํ๋ฉด .equals()๋ ํด๋์ค ๋ด๋ถ์ ํจ์, ์ฆ ๋ฉ์๋์ ๋๋ค.
๊ทธ๋์ ํด๋์ค ๋ด๋ถ์์ ์ค๋ฒ๋ผ์ด๋ฉ์ด ๋์ด ์์ ์๋ ์๊ณ ์ ๋์ด ์์ ์๋ ์์ต๋๋ค.
์ฆ, .equals()๊ฐ ์ด๋ค ํด๋์ค์ ์ธ์คํด์ค์์ ํธ์ถ๋๋๋์ ๋ฐ๋ผ ๊ธฐ๋์ ๋ค๋ฅธ ๋์์ ํ ์๋ ์๋ค๋ ๋ป์ ๋๋ค.
ํ...
์ด๋์์ ๊ฐ์ ๋น๊ตํ๊ณ , ์ด๋์์ ์ฃผ์๊ฐ์ ๋น๊ตํ ์ง ๋ชจ๋ฅด๋ ์ฌ์ฉ์ ์์ฃผ์์ฃผ ์ฃผ์ํ์ ์ผ ํฉ๋๋ค.
String์ .equals()๊ฐ ์ค๋ฒ๋ผ์ด๋๋ ๋ํ์ ์ธ ๊ฐ์ฒด์ฃ . ๊ทธ๋ฆฌ๊ณ ์ด ์ฌ์ค์ด ๋งค์ฐ ์ ์๋ ค์ ธ ์์ต๋๋ค.
๊ทธ๋์ kotlin์์๋ ์๋์ ๊ฐ์ ๋น๊ต๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
var A = "Hello"
var B = "Hello"
A.equals(B)
A == B
A.equals(B)์ A == B๋ ๋์ผํ ๋์์ ํฉ๋๋ค.
๊ทธ๋์ true๋ฅผ ๋ฆฌํดํด์ฃผ๊ฒ ๋๋๋ฐ์.
์ด๋ ๊ฒ .equals()๊ฐ ๋ฏธ๋ฆฌ ์ค๋ฒ๋ผ์ด๋ฉ๋์ด == ์ฐ์ฐ์๋ฅผ ํธ์ถํ์ ๋ ๋๋ฑ์ฑ์ ๋น๊ตํด ์ฃผ๋ ๊ฐ์ฒด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- String
- kotlin์ data class๋ก ์์ฑ๋ ๊ฐ์ฒด
- List<T>
์ ๊ฐ ์๊ณ ์๋ ๊ฐ์ฒด๋ ์ด ์ ๋์ ๋๋ค.
String์ ์ผ๋จ ๋น์ฐํ๊ณ ์.
kotiln์ data class๋ .equals()์ .hashCode()๋ฅผ ์๋์ผ๋ก ์ค๋ฒ๋ผ์ด๋ฉํด์ ๋๋ฑ์ฑ์ ๋น๊ตํ ์ ์๊ฒ๋ ๋ง๋ค์ด ์ค๋๋ค.
List<T>๋ ๊ฑฐ์ง๋ง ๊ฐ์ผ์๊ฒ ์ง๋ง ์ง์ง์ ๋๋ค.
์๋๋ AbstractList์ equals() ๊ณต์๋ฌธ์์ ๋๋ค.
equals - Kotlin Programming Language
kotlinlang.org
์ฃผ์ด์ง ๋ฆฌ์คํธ๊ฐ ๋์ผํ ํฌ๊ธฐ์ด๋ฉด์ ๋์ผํ ์์๋ฅผ ๋์ผํ ์์๋ก ์ ์ฅํ๊ณ ์๋ค๋ฉด return true์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ .equals()๊ฐ ๋ฏธ๋ฆฌ ์ค๋ฒ๋ผ์ด๋ฉ๋์ด ์์ง ์์ ๊ฐ์ฒด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฌ์ฉ์๊ฐ ๋ง๋ค์ด equals()๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ์ง ์์ ๋ชจ๋ class(์ด๊ฑด ๋น์ฐํ์ฃ )
- Array<T>
- IntArray, LongArray ๋ฑ primitive type arrays
์ฌ๋ฏธ์์ฃ ?
์ฌ์ค ์ฌ๋ฏธ์์ต๋๋ค.
var arr1 = Array<Int>(10) { it }
var arr2 = Array<Int>(10) { it }
println(arr1 == arr2)
// false
var intarr1 = IntArray(10)
var intarr2 = IntArray(10)
println(intarr1 == intarr2)
// false
๊ทธ๋ฌ๋๊น ์ด๋ ๊ฒ ๋๋ค๋ ๊ฒ์ด์ฃ .
์๋ํ๋ฉด array์์ == ์ฐ์ฐ์๋ ์ฃผ์๊ฐ, ์ฆ Referential equality๋ฅผ ๋น๊ตํด ์ฃผ๊ธฐ ๋๋ฌธ์ ๋๋ค. Intarray๋ ๋ง์ฐฌ๊ฐ์ง๊ณ ์.
๊ทธ๋ผ ์๋ค๋ฅผ Structural equality๋ก ๋น๊ตํ๊ธฐ ์ํด์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์๊น์?
์ฌ์ค ์์ต๋๋ค.
.contentEquals()์ ๋๋ค.
์ ๋ง ๋ด๋ถ ๊ฐ ๋น๊ตํด์ฃผ๊ฒ ์๊ธด ๋ฉ์๋์ฃ ?
๋งค๋ฒ for๋ฌธ ๋๋ฆฌ์ง ์์๋ ๋์ด์ ๋คํ์ ๋๋ค.
var arr1 = Array<Int>(10) { it }
var arr2 = Array<Int>(10) { it }
println(arr1.contentEquals(arr2))
// true
var intarr1 = IntArray(10)
var intarr2 = IntArray(10)
println(intarr1.contentEquals(intarr2))
// true
ํ์ง๋ง ์ํ๊น์ด ์ ์ด ํ๋ ์์ต๋๋ค.
์ด ๋ฉ์๋๋ ๋น์ฐํ๊ฒ๋... == ์ฐ์ฐ์์ ๋งคํ๋์ง ์์ต๋๋ค.
๊ทธ๋ผ ์ด๋ค ์ ๊ฐ์ค๋ฌ์ด ์ผ์ด ์ผ์ด๋๋๋?
์ด๋ฐ ๊ฐ์ฒด๋ค์ set์ ์ ๋๋ก ๋ค์ด๊ฐ์ง ์์ต๋๋ค. Comparator๋ฅผ ์ฌ์ ์ํด์ฃผ๋ ๋ฐฉ์๋ ๋น์ฐํ ์ ๋จนํ๋๋ค.
HashSet<IntArray>์ ์์ํ ์ฝ๋๊ฐ ๋์ด ๋ฒ๋ฆฝ๋๋ค.
ํ์ง๋ง HashSet<List<Int>>๋ ์ ๋๋ก ๋์ํ๋ต๋๋ค.
IntArray์ List<Int>๋ ๋๋ฌด๋๋ฌด ํฐ ์๊ฐ๋ณต์ก๋ ์ฐจ์ด๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๋ผ์ํ ์์ค์ ๋๋ค.
๋งค๋ฒ ๋ณํํด ๊ฐ๋ฉด์ ๋น๊ตํ ์๋ ์๋ ๋ ธ๋ฆ์ด๊ณ ๋ง์ด์ฃ ...
์ข์ ๋ฐฉ๋ฒ์ ์๊ณ ๊ณ์ ๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์.
'๐ ๊ณต๋ถ > ๐ Kotlin' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Kotlin์์ Set์ Array ๋ฃ๋ ๋ฐฉ๋ฒ (0) | 2023.07.19 |
---|---|
์ฝํ๋ฆฐ ๋๋ฌด ์ฌ๋ฐ๋ค๋ ๊ธ (0) | 2023.04.24 |
Kotlin์์ ์ฝ๋ ์คํ ์๊ฐ ์ฌ๊ธฐ (2) | 2023.02.11 |
Equality | Kotlin
kotlinlang.org
๊ณต์๋ฌธ์์ ๋ฐ๋ฅด๋ฉด kotlin์๋ ๋ ๊ฐ์ง ํ์ ์ Equality๊ฐ ์กด์ฌํฉ๋๋ค.
Structural equality์ Referential equality์ธ๋ฐ์.
๊ฐ๋จํ ๋งํ์๋ฉด Structural equality๋ ๊ฐ์ ๋น๊ตํ๋ ๊ฒ์ด๊ณ , Referential equality๋ ์ฃผ์๊ฐ ๋น๊ต๋ฅผ ํตํด ๋์ผํ ๊ฐ์ฒด์ธ์ง๋ฅผ ๋น๊ตํ๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์์ ๋๋ฑ์ฑ๊ณผ ๋์ผ์ฑ์ ๋ํด ์์๋ด ์๋ค.
๋์ผ์ฑ identity
๋์ผํ๋ค๋ ๋ป์ผ๋ก, ์ฃผ์ด์ง ๋ ๊ฐ์ ๊ฐ์ฒด๊ฐ ์์ ํ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๋ปํ๋ค.
์ฆ, ์ฃผ์๊ฐ์ ๋น๊ตํ์ฌ ๋์ผํ ์ฃผ์์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํฌ ๊ฒฝ์ฐ true, ์๋ ๊ฒฝ์ฐ false์ด๋ค.
๋๋ฑ์ฑ equality
๋๋ฑํ๋ค๋ ๋ป์ผ๋ก, ์ฃผ์ด์ง ๋ ๊ฐ์ ๊ฐ์ฒด๊ฐ ๋๋ฑํ ์ ๋ณด๋ฅผ ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ๋ปํ๋ค.
์ฃผ์๊ฐ์ด ๋ฌ๋ผ๋ ์ ์ฅ๋ ๊ฐ์ด ๋๋ฑํ ์ ์์ผ๋ฏ๋ก, ๋์ผ์ฑ์ด ์ฑ๋ฆฝํ์ง ์์๋ ๋๋ฑ์ฑ์ด ์ฑ๋ฆฝํ ์ ์๋ค.
๊ทธ๋ ์ต๋๋ค.
Kotlin์์๋ Structural equality์ ๋ํ ๋น๊ต๋ == ์ฐ์ฐ์๋ฅผ ์ด์ฉํ๊ณ , Referential equality์ ๋ํ ๋น๊ต๋ === ์ฐ์ฐ์๋ฅผ ์ด์ฉํฉ๋๋ค.
== ์ฐ์ฐ์๋ ์ฐธ์กฐ ํ์ ์ ๋น๊ตํ ๋ ๋ด๋ถ์ ์ผ๋ก .equals()๋ฅผ ํธ์ถํฉ๋๋ค.
์ด๋ ์ด equals()์ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ 5๊ฐ์ง requirements๋ฅผ ๋ง์กฑํด์ผ ํฉ๋๋ค.
- Reflexive: for any non-null value x, x.equals(x) should return true.
- Symmetric: for any non-null values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
- Transitive: for any non-null values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
- Consistent: for any non-null values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
- Never equal to null: for any non-null value x, x.equals(null) should return false.
๊ทธ๋ฆฌ๊ณ Comparable<...> ์ธํฐํ์ด์ค๋ก ์ ์๋๋ comparison ๋ฐฉ์์ ์ ํ!!! ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
์ฐธ๊ณ ๋ก === ์ฐ์ฐ์๋ ๋ฐํ์์ Int์ ๊ฐ์, primitive types๋ก ํํ๋๋ ๊ฐ์ ํํ์ฌ ==์ ๋๊ฐ์ด ๋์ํฉ๋๋ค.
์ฆ, ์๋ ๋ ์ฝ๋๋ ๊ฐ์ต๋๋ค.
a == b
a?.equals(b) ?: (b === null)
์ด .equals()๊ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์๋ํ๋ฉด .equals()๋ ํด๋์ค ๋ด๋ถ์ ํจ์, ์ฆ ๋ฉ์๋์ ๋๋ค.
๊ทธ๋์ ํด๋์ค ๋ด๋ถ์์ ์ค๋ฒ๋ผ์ด๋ฉ์ด ๋์ด ์์ ์๋ ์๊ณ ์ ๋์ด ์์ ์๋ ์์ต๋๋ค.
์ฆ, .equals()๊ฐ ์ด๋ค ํด๋์ค์ ์ธ์คํด์ค์์ ํธ์ถ๋๋๋์ ๋ฐ๋ผ ๊ธฐ๋์ ๋ค๋ฅธ ๋์์ ํ ์๋ ์๋ค๋ ๋ป์ ๋๋ค.
ํ...
์ด๋์์ ๊ฐ์ ๋น๊ตํ๊ณ , ์ด๋์์ ์ฃผ์๊ฐ์ ๋น๊ตํ ์ง ๋ชจ๋ฅด๋ ์ฌ์ฉ์ ์์ฃผ์์ฃผ ์ฃผ์ํ์ ์ผ ํฉ๋๋ค.
String์ .equals()๊ฐ ์ค๋ฒ๋ผ์ด๋๋ ๋ํ์ ์ธ ๊ฐ์ฒด์ฃ . ๊ทธ๋ฆฌ๊ณ ์ด ์ฌ์ค์ด ๋งค์ฐ ์ ์๋ ค์ ธ ์์ต๋๋ค.
๊ทธ๋์ kotlin์์๋ ์๋์ ๊ฐ์ ๋น๊ต๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
var A = "Hello"
var B = "Hello"
A.equals(B)
A == B
A.equals(B)์ A == B๋ ๋์ผํ ๋์์ ํฉ๋๋ค.
๊ทธ๋์ true๋ฅผ ๋ฆฌํดํด์ฃผ๊ฒ ๋๋๋ฐ์.
์ด๋ ๊ฒ .equals()๊ฐ ๋ฏธ๋ฆฌ ์ค๋ฒ๋ผ์ด๋ฉ๋์ด == ์ฐ์ฐ์๋ฅผ ํธ์ถํ์ ๋ ๋๋ฑ์ฑ์ ๋น๊ตํด ์ฃผ๋ ๊ฐ์ฒด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- String
- kotlin์ data class๋ก ์์ฑ๋ ๊ฐ์ฒด
- List<T>
์ ๊ฐ ์๊ณ ์๋ ๊ฐ์ฒด๋ ์ด ์ ๋์ ๋๋ค.
String์ ์ผ๋จ ๋น์ฐํ๊ณ ์.
kotiln์ data class๋ .equals()์ .hashCode()๋ฅผ ์๋์ผ๋ก ์ค๋ฒ๋ผ์ด๋ฉํด์ ๋๋ฑ์ฑ์ ๋น๊ตํ ์ ์๊ฒ๋ ๋ง๋ค์ด ์ค๋๋ค.
List<T>๋ ๊ฑฐ์ง๋ง ๊ฐ์ผ์๊ฒ ์ง๋ง ์ง์ง์ ๋๋ค.
์๋๋ AbstractList์ equals() ๊ณต์๋ฌธ์์ ๋๋ค.
equals - Kotlin Programming Language
kotlinlang.org
์ฃผ์ด์ง ๋ฆฌ์คํธ๊ฐ ๋์ผํ ํฌ๊ธฐ์ด๋ฉด์ ๋์ผํ ์์๋ฅผ ๋์ผํ ์์๋ก ์ ์ฅํ๊ณ ์๋ค๋ฉด return true์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ .equals()๊ฐ ๋ฏธ๋ฆฌ ์ค๋ฒ๋ผ์ด๋ฉ๋์ด ์์ง ์์ ๊ฐ์ฒด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฌ์ฉ์๊ฐ ๋ง๋ค์ด equals()๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ์ง ์์ ๋ชจ๋ class(์ด๊ฑด ๋น์ฐํ์ฃ )
- Array<T>
- IntArray, LongArray ๋ฑ primitive type arrays
์ฌ๋ฏธ์์ฃ ?
์ฌ์ค ์ฌ๋ฏธ์์ต๋๋ค.
var arr1 = Array<Int>(10) { it }
var arr2 = Array<Int>(10) { it }
println(arr1 == arr2)
// false
var intarr1 = IntArray(10)
var intarr2 = IntArray(10)
println(intarr1 == intarr2)
// false
๊ทธ๋ฌ๋๊น ์ด๋ ๊ฒ ๋๋ค๋ ๊ฒ์ด์ฃ .
์๋ํ๋ฉด array์์ == ์ฐ์ฐ์๋ ์ฃผ์๊ฐ, ์ฆ Referential equality๋ฅผ ๋น๊ตํด ์ฃผ๊ธฐ ๋๋ฌธ์ ๋๋ค. Intarray๋ ๋ง์ฐฌ๊ฐ์ง๊ณ ์.
๊ทธ๋ผ ์๋ค๋ฅผ Structural equality๋ก ๋น๊ตํ๊ธฐ ์ํด์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์๊น์?
์ฌ์ค ์์ต๋๋ค.
.contentEquals()์ ๋๋ค.
์ ๋ง ๋ด๋ถ ๊ฐ ๋น๊ตํด์ฃผ๊ฒ ์๊ธด ๋ฉ์๋์ฃ ?
๋งค๋ฒ for๋ฌธ ๋๋ฆฌ์ง ์์๋ ๋์ด์ ๋คํ์ ๋๋ค.
var arr1 = Array<Int>(10) { it }
var arr2 = Array<Int>(10) { it }
println(arr1.contentEquals(arr2))
// true
var intarr1 = IntArray(10)
var intarr2 = IntArray(10)
println(intarr1.contentEquals(intarr2))
// true
ํ์ง๋ง ์ํ๊น์ด ์ ์ด ํ๋ ์์ต๋๋ค.
์ด ๋ฉ์๋๋ ๋น์ฐํ๊ฒ๋... == ์ฐ์ฐ์์ ๋งคํ๋์ง ์์ต๋๋ค.
๊ทธ๋ผ ์ด๋ค ์ ๊ฐ์ค๋ฌ์ด ์ผ์ด ์ผ์ด๋๋๋?
์ด๋ฐ ๊ฐ์ฒด๋ค์ set์ ์ ๋๋ก ๋ค์ด๊ฐ์ง ์์ต๋๋ค. Comparator๋ฅผ ์ฌ์ ์ํด์ฃผ๋ ๋ฐฉ์๋ ๋น์ฐํ ์ ๋จนํ๋๋ค.
HashSet<IntArray>์ ์์ํ ์ฝ๋๊ฐ ๋์ด ๋ฒ๋ฆฝ๋๋ค.
ํ์ง๋ง HashSet<List<Int>>๋ ์ ๋๋ก ๋์ํ๋ต๋๋ค.
IntArray์ List<Int>๋ ๋๋ฌด๋๋ฌด ํฐ ์๊ฐ๋ณต์ก๋ ์ฐจ์ด๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๋ผ์ํ ์์ค์ ๋๋ค.
๋งค๋ฒ ๋ณํํด ๊ฐ๋ฉด์ ๋น๊ตํ ์๋ ์๋ ๋ ธ๋ฆ์ด๊ณ ๋ง์ด์ฃ ...
์ข์ ๋ฐฉ๋ฒ์ ์๊ณ ๊ณ์ ๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์.
'๐ ๊ณต๋ถ > ๐ Kotlin' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Kotlin์์ Set์ Array ๋ฃ๋ ๋ฐฉ๋ฒ (0) | 2023.07.19 |
---|---|
์ฝํ๋ฆฐ ๋๋ฌด ์ฌ๋ฐ๋ค๋ ๊ธ (0) | 2023.04.24 |
Kotlin์์ ์ฝ๋ ์คํ ์๊ฐ ์ฌ๊ธฐ (2) | 2023.02.11 |