๊ทธ๋ ๋ค.
์ด ๊ธ์ ๋ฐฉ๊ธ ์ฝํ
์์ ์ ์๋ฌ๋ฅผ ๋ณด๊ณ ์ฒ์ ๋ณด๋ ์๋ฌ๋ผ ๋นํฉํ๊ณ ,
๋ก์ง์ ๋ค ์งฐ๋๋ฐ ์ ๊ฒ ๋๋ฌธ์ ๋ฌธ์ ๋ฅผ ๋ชป ํ์ด์ ๋ถ๋
ธ์ ์ฐจ์ ์ฐ๋ ๊ธ์ด๋ค.
java.util.ConcurrentModificationException ์ด๋^^!!
์ฃผ๋ก ๋ฆฌ์คํธ๋ฅผ ์ํํ๋ฉด์ ๋์์ ์์ ํ ๋ ๋ฐ์ํ๋ ์๋ฌ์ด๋ค.
๋๊ฐ์ ๊ฒฝ์ฐ์ list๋ฅผ for๋ฌธ์ผ๋ก ๋๋ฆฌ๋ฉด์,
tempList = list๋ฅผ ์ ์ธํ๋๋ฐ,
์ด๊ฒ์ด ๋ฌธ์ ์๋ค..๐ต
์ดํด๊ฐ ์ฝ๋๋ก ์ฝ๋๋ฅผ ๋ณด์!
list ๋งจ ์์ element๋ฅผ ๋งจ๋ค๋ก ์ฎ๊ธฐ๋ ์์ ์ ๋ฐ๋ณตํ๋ ๋ก์ง์ด๋ค.
fun solution(list: MutableList<Int>) {
for ((i, element) in list.withIndex()) {
val tempList = list
val firstElement = tempList.removeAt(0)
tempList.add(firstElement)
}
}
3๋ฒ์งธ ์ค์ ๋ณด์๋ผ . .
๋ฉ์ฒญํ ๋ . . ๐คฆโ๏ธ
์ ๋ ๊ฒ ์ ์ธํ๋ฉด tempList๋ list์ ๊ฐ์ ๊ณณ์ ๊ฐ๋ฆฌํค๋ฏ๋ก
for๋ฌธ์ผ๋ก list๋ฅผ ์ํํ๋ ๊ฑด tempList๋ฅผ ์ํํ๋ ๊ฑฐ๋ ๋ง์ฐฌ๊ฐ์ง๊ฐ ๋๋ค.
๊ทธ๋์ ConcurrentModificationException์ด ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ํด๊ฒฐํ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ๋ค์ด ์๋ค.
1. ์์ ๋ฆฌ์คํธ ์ ์ธ
fun solution(list: MutableList<Int>) {
for ((i, element) in list.withIndex()) {
val tempList = mutableListOf(list) // mutableList๋ฅผ ์๋ก ์ ์ธ
val firstElement = tempList.removeAt(0)
tempList.add(firstElement)
}
}
๋ด๊ฐ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ด๋ค.!
๋ด์ฉ๋ฌผ(?)์ ๋๊ฐ์ง๋ง ๋ค๋ฅธ collection์ ์ ์ธํด ์ฃผ๋ ๊ฒ์ด๋ค.
2. indices ์ฌ์ฉ
fun solution(list: MutableList<Int>) {
for (i in list.indices) {
val firstElement = list.removeAt(0)
list.add(firstElement)
}
}
๋ง์ฝ list์ element๊ฐ ํ์ ์๋ค๋ฉด, ์ด ๋ฐฉ๋ฒ์ด ํจ์จ์ ์ด๋ค.
indices ํจ์์ ๋ด๋ถ๋ฅผ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
public val Collection<*>.indices: IntRange
get() = 0..size - 1
์ฆ, list์ ์ธ๋ฑ์ค(IntRange)๋ก ์ ๊ทผํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ง์ list๋ฅผ ์ํํ๋ ๊ฒ์ด ์๋๋ฏ๋ก
ConcurrentModificationException์ด ๋ฐ์ํ์ง ์๋๋ค.
list์ element๊ฐ ํ์ํ ๋ 1๋ฒ ๋ฐฉ๋ฒ์
์๋๋ฉด 2๋ฒ ๋ฐฉ๋ฒ์ ์ฐ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
๐ฅน
'Kotlin' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
IntelliJ์์ JUnit4 ํ ์คํธ ํ๊ฒฝ ์ค์ ๋ฐ ๋ฐฉ๋ฒ (1) | 2024.12.22 |
---|---|
์ฝํ๋ฆฐ Kotlin 2์ฐจ์ ๋ฐฐ์ด ์ถ๋ ฅํ๊ธฐ (0) | 2024.07.24 |
์ฝํ๋ฆฐ Kotlin split("")์ด ์ ๋๋ก ๋์ํ์ง ์๋ ์ด์ (2) | 2023.12.03 |
Kotlin ์ฝํ๋ฆฐ ๋ฌธ์์ด ๋์๋ฌธ์ ํจ์๋ค(toUpperCase, caplitalize ๋ฑ) Deprecated๋ ์ด์ (0) | 2023.03.10 |
Kotlin ์ฝํ๋ฆฐ ์ฝ๋ฉ ์ปจ๋ฒค์ (0) | 2022.12.02 |