Day12 - jeremy0405/Codesquad_CS GitHub Wiki

int 배열을 리슀트둜

였늘 donggi와 ν›„λž‘ 같이 짝 ν”„λ‘œκ·Έλž˜λ°μ„ ν–ˆμ—ˆλ‹€. 이 κ³Όμ •μ—μ„œ int 배열을 리슀트둜 λ³€ν™˜ ν›„ 리슀트의 contains() λ©”μ„œλ“œλ₯Ό 톡해 값이 μ‘΄μž¬ν•˜λŠ”μ§€ 유무λ₯Ό μ²΄ν¬ν•˜λ €κ³  ν–ˆλ‹€. ν•˜μ§€λ§Œ μ›ν•˜λŠ”λŒ€λ‘œ λ™μž‘μ΄ λ˜μ§€ μ•Šμ•„μ„œ λ‹Ήν™©μŠ€λŸ¬μ› λ‹€. μ™œ λ™μž‘μ„ ν•˜μ§€ μ•Šμ•˜λŠ”μ§€ λ™μž‘μ„ ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ–΄λ–»κ²Œ ν•΄μ•Ό ν•˜λŠ”μ§€ 정리해보렀고 ν•œλ‹€.

int[] array = {1, 2, 4, 8, 16};

List.of(array).contains(1);

μœ„μ˜ μ½”λ“œλ₯Ό 보면 arrayλ₯Ό 리슀트둜 λ³€ν™˜ ν›„ 1이 λ“€μ–΄κ°€ μžˆμœΌλ‹ˆκΉŒ trueλ₯Ό λ°˜ν™˜ν•  것 κ°™λ‹€. ν•˜μ§€λ§Œ μ‹€μ œλ‘œλŠ” falseλ₯Ό λ°˜ν™˜ν•œλ‹€.

λ‹€μŒκ³Ό 같은 μ½”λ“œλŠ” μ–΄λ–¨κΉŒ?

int[] array = {1, 2, 4, 8, 16};

Arrays.asList(array).contains(1);

μœ„μ˜ μ½”λ“œλ„ trueλ₯Ό λ°˜ν™˜ ν•  것 κ°™μ§€λ§Œ falseλ₯Ό λ°˜ν™˜ν•œλ‹€.

μš°λ¦¬κ°€ array μ°Έμ‘°λ³€μˆ˜λ₯Ό List.of() λ˜λŠ” Arrays.asList()에 넣을 λ•Œ List<Integer> νƒ€μž…μ„ κΈ°λŒ€ν–ˆμ§€λ§Œ μ‹€μ œ λ°˜ν™˜ νƒ€μž…μ€ List<int[]> κ°€ λ°˜ν™˜μ΄ 되기 λ•Œλ¬Έμ— Listμ—λŠ” int 배열을 κ°€λ₯΄ν‚€λŠ” μ°Έμ‘°λ³€μˆ˜ (λ©”λͺ¨λ¦¬μ£Όμ†Œ)κ°€ λ“€μ–΄κ°€ 있게 λ˜λŠ” 것이닀.


κ·Έλ ‡λ‹€λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό μ½”λ“œκ°€ 우리의 μ˜λ„λŒ€λ‘œ λ™μž‘ν• κΉŒ?

  1. primitive type을 Wrapper Class둜 λ°”κΎΌλ‹€.
Integer[] array = {1, 2, 4, 8, 16};

List.of(array).contains(1);            //true
Arrays.asList(array).contains(1);      //true

  1. 반볡문으둜 직접 λ„£μ–΄μ€€λ‹€.
int[] array = {1, 2, 4, 8, 16};

List<Integer> list = new ArrayList<>();
for (int a : arr) {
	list.add(a);
}

list.contains(1);       //true
  1. Stream을 μ‚¬μš©ν•œλ‹€.
int[] array = {1, 2, 4, 8, 16};

List<Integer> list = Arrays.stream(array)
				.boxed()
				.collect(Collectors.toList());

list.contains(1);         //true								

μ£Όμ˜μ‚¬ν•­

List.of()둜 리슀트λ₯Ό λ§Œλ“  κ²½μš°μ—λŠ” Immutable을 μœ μ§€ν•˜κΈ° λ•Œλ¬Έμ— 배열에 add, set, sort, remove와 같은 λ©”μ†Œλ“œλ“€μ„ μ•„μ˜ˆ μ‚¬μš©ν•  수 μ—†λ‹€. λ˜ν•œ null값이 ν• λ‹Ή 될 수 μ—†λ‹€. Arrays.asList() 둜 배열을 λ§Œλ“  κ²½μš°μ—λŠ” setμ΄λ‚˜ replace 와 같은 변경은 ν—ˆμš©ν•˜λ©° null도 ν—ˆμš©ν•œλ‹€. ν•˜μ§€λ§Œ add와 remove와 같은 κ²½μš°λŠ” κΈˆμ§€ν•œλ‹€.

λ”°λΌμ„œ 배열을 리슀트둜 λ§Œλ“  ν›„ add와 같은 λ©”μ„œλ“œλ“€μ„ μ‚¬μš©ν•˜κ³  μ‹Άλ‹€λ©΄ Stream을 μ΄μš©ν•΄μ„œ 리슀트λ₯Ό 생성(μœ„μ˜ 3번 방식)ν•˜κ±°λ‚˜ 배열을 ν•˜λ‚˜μ”© List에 addν•˜λŠ” 방식(μœ„μ˜ 2번 방식)으둜 λ§Œλ“€μ–΄μ•Ό ν•œλ‹€.

+----------------------+---------------+----------+----------------+---------------------+
|      Operations      | SINGLETONLIST | LIST.OF  | ARRAYS.ASLIST  | JAVA.UTIL.ARRAYLIST |
+----------------------+---------------+----------+----------------+---------------------+
|          add         |       ❌      |     ❌  |        ❌      |          βœ”οΈ          |
+----------------------+---------------+----------+----------------+---------------------+
|        addAll        |       ❌      |     ❌  |        ❌      |          βœ”οΈ          |
+----------------------+---------------+----------+----------------+---------------------+
|         clear        |       ❌      |     ❌  |        ❌      |          βœ”οΈ          |
+----------------------+---------------+----------+----------------+---------------------+
|        remove        |       ❌      |     ❌  |        ❌      |          βœ”οΈ          |
+----------------------+---------------+----------+----------------+---------------------+
|       removeAll      |       ❗️       |     ❌   |        ❗️       |          βœ”οΈ          |
+----------------------+---------------+----------+----------------+---------------------+
|       retainAll      |       ❗️       |     ❌  |        ❗️        |          βœ”οΈ          |
+----------------------+---------------+----------+----------------+---------------------+
|      replaceAll      |       ❌      |     ❌  |        βœ”οΈ       |          βœ”οΈ          |
+----------------------+---------------+----------+----------------+---------------------+
|          set         |       ❌      |     ❌  |        βœ”οΈ       |          βœ”οΈ          |
+----------------------+---------------+----------+----------------+---------------------+
|         sort         |       βœ”οΈ       |     ❌   |        βœ”οΈ      |          βœ”οΈ          |
+----------------------+---------------+----------+----------------+---------------------+
|  remove on iterator  |       ❌      |     ❌  |        ❌      |          βœ”οΈ          |
+----------------------+---------------+----------+----------------+---------------------+
| set on list-iterator |       ❌      |     ❌  |        βœ”οΈ       |          βœ”οΈ          |
+----------------------+---------------+----------+----------------+---------------------+

참고자료 - stackoverflow

⚠️ **GitHub.com Fallback** ⚠️