λμ°λ―Έ λ©μλ(Helper Method)λ, μ΄λ€ μμ
μ μνν λ μ£Ό λ©μλμ κΈ°λ₯μ 보쑰νκ±°λ λ°λ³΅μ μΈ μμ
μ μ²λ¦¬νκΈ° μν΄ μ¬μ©λλ 보쑰μ μΈ λ©μλμ
λλ€.
λμ°λ―Έ λ©μλλ μ½λμ μ¬μ¬μ©μ±μ λμ΄κ³ , μ£Ό λ©μλμ κ°λ μ±μ ν₯μμν€κΈ° μν΄ μ£Όλ‘ μ¬μ©λ©λλ€.
μ£Ό λ©μλμ 볡μ‘ν μμ μ μ¬λ¬ μμ μμ μΌλ‘ λλ λ, κ°κ°μ μμ μμ μ λμ°λ―Έ λ©μλλ‘ κ΅¬νν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μ½λλ₯Ό λͺ¨λννκ³ , μ μ§λ³΄μνκΈ° μ½κ² λ§λ€ μ μμ΅λλ€.
λμ°λ―Έ λ©μλλ λ€μκ³Ό κ°μ μν©μμ μ μ©ν©λλ€:
- 볡μ‘ν λ‘μ§μ λ¨μνν λ: μ£Ό λ©μλμμ νΉμ μμ μ λ°λ³΅μ μΌλ‘ μ²λ¦¬ν΄μΌ νκ±°λ 볡μ‘ν λ‘μ§μ΄ νμν κ²½μ°, μ΄λ₯Ό λ³λμ λμ°λ―Έ λ©μλλ‘ λΆλ¦¬ν¨μΌλ‘μ¨ μ£Ό λ©μλμ κ°λ μ±μ λμ λλ€.
- μ½λ μ€λ³΅μ μ€μΌ λ: μ¬λ¬ λ©μλμμ λ°λ³΅μ μΌλ‘ μ¬μ©λλ λ‘μ§μ λμ°λ―Έ λ©μλλ‘ λΆλ¦¬νλ©΄ μ½λ μ€λ³΅μ μ€μΌ μ μμ΅λλ€.
- μΊ‘μν: νΉμ λ‘μ§μ μΈλΆμ λ ΈμΆνμ§ μκ³ λ΄λΆμμλ§ μ¬μ©νκ³ μΆμ λ λμ°λ―Έ λ©μλλ‘ μ μν©λλ€.
λ€μμ μ΄μ μμ μμ λμ°λ―Έ λ©μλ(wildcardSwapHelper)μ μν μ μ€λͺ
ν κ²μ
λλ€.
import java.util.List;
class SwapTest {
// μμΌλμΉ΄λ νμ
μ μ¬μ©ν swap λ©μλ
public static void wildcardSwap(List<?> list, int i, int j) {
// λμ°λ―Έ λ©μλλ₯Ό μ¬μ©νμ¬ νμ
μμ μ±μ ν보
wildcardSwapHelper(list, i, j);
}
// λμ°λ―Έ λ©μλ
// μ΄ λ©μλλ μ λ€λ¦ νμ
<E>μ μ¬μ©νμ¬ μμΌλμΉ΄λλ‘ μ λ¬λ 리μ€νΈλ₯Ό μμ νκ² μ²λ¦¬ν©λλ€.
private static <E> void wildcardSwapHelper(List<E> list, int i, int j) {
// 리μ€νΈμ λ μμλ₯Ό κ΅ννλ λ‘μ§
list.set(i, list.set(j, list.get(i)));
}
}wildcardSwapλ©μλλList<?>νμ μ 리μ€νΈλ₯Ό λ°μλ€μ΄κΈ° λλ¬Έμ 리μ€νΈμ μμ νμ μ΄ μ΄λ€ κ²μΈμ§ μ μ μμ΅λλ€. μ΄ κ²½μ°,nullμΈμ κ°μ 리μ€νΈμ μΆκ°ν μ μμ΅λλ€.wildcardSwapHelperλ©μλλ λμ°λ―Έ λ©μλλ‘μ, μμΌλμΉ΄λ νμ μ μ€μ μ λ€λ¦ νμ<E>μΌλ‘ λ³νν΄ μ£Όμ΄ νμ μμ μ±μ ν보ν©λλ€. μ¦,List<E>λ‘ νμ μ μΆλ‘ νκ² νμ¬ μμλ₯Ό μμ νκ² κ΅νν μ μκ² λ©λλ€.- λμ°λ―Έ λ©μλλ₯Ό μ¬μ©ν¨μΌλ‘μ¨ μ£Ό λ©μλ(
wildcardSwap)λ λ κ°λ¨ν΄μ§κ³ , μμΌλμΉ΄λ νμ μ νκ³λ₯Ό 극볡ν μ μμ΅λλ€.
- μμΌλμΉ΄λ νμ
μ μ ν 극볡:
List<?>μ κ°μ μμΌλμΉ΄λ νμ μμλ νμ μμ μ± λ¬Έμ λ‘ μΈν΄nullμΈμ κ°μ μΆκ°ν μ μμ§λ§, λμ°λ―Έ λ©μλμμλ νμ λ§€κ°λ³μλ₯Ό λͺ μν΄ μμ νκ² μμ μ μνν μ μμ΅λλ€. - μ½λμ λ¨μν: 볡μ‘ν λ‘μ§μ λμ°λ―Έ λ©μλλ‘ λΆλ¦¬νλ©΄ μ£Ό λ©μλμ κ°λ μ±μ΄ λμμ§λλ€.
λ°λΌμ λμ°λ―Έ λ©μλλ μ£Ό λ©μλλ₯Ό 보쑰νλ©΄μλ, νΉμ μμ μ μμ νκ² μ²λ¦¬νκ±°λ λ°λ³΅μ μΈ μμ μ λͺ¨λννλ λ° μ€μν μν μ ν©λλ€.