[JAVA] 59. Collection - Collections

윤설안's avatar
Feb 19, 2025
[JAVA] 59. Collection - Collections
💡
Collections 클래스는 여러 유용한 알고리즘을 구현한 메서드들을 제공한다.

중요 알고리즘

  • 정렬 (Sorting)
  • 섞기 (Suuffling)
  • 탐색 (Searching)

1. 정렬 (Sorting)

❗
Collections 클래스의 정렬은 속도가 비교적 빠르고 안정성이 보장되는 합병 정렬을 이용한다. 합볍 정렬은 시간 복잡도가 O(nlog(n)이며 특히 거의 정렬된 리스트에 대해서는 상당히 빠르다.
package ex13; import java.util.Arrays; import java.util.Collections; import java.util.List; public class Sort { public static void main(String[] args) { String[] sample = {"A", "D", "B", "C"}; List<String> list = Arrays.asList(sample); // 배열을 리스트로 변경 Collections.sort(list); System.out.println(list); } }
notion image

2. 섞기 (Suuffling)

❗
섞기 알고리즘은 정렬과 반대 동작을 한다. 리스트에 존재하는 정렬을 파괴하여서 순서를 랜덤하게 만든다.
package ex13; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Shuffle { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); for (int i = 0; i < 10; i++) list.add(i); Collections.shuffle(list); // 섞기 클래스 System.out.println(list); } }

1회차

notion image

2회차

notion image

3. 탐색 (Searching)

❗
리스트 안에서 원하는 원소를 찾는 것이다. 만약 리스트가 정렬되어 있지 않다면 처음부터 모든 원소를 방문해야 한다(선행 탐색). 하지만 리스트가 정렬되어 있다면 중간에 있는 원소와 먼저 비교하는 것이 좋다(이진 탐색). 만약 || 중간 원소 < 찾는 원소 || 이면 뒷 부분에는 있고 || 중간 원소 > 찾는 원소 || 이면 앞 부분에 있다. 이렇게 하면 찾는 횟수를 반으로 줄일 수 있다.
package ex13; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Ser01 { public static void main(String[] args) { int key = 20; List<Integer> list = new ArrayList<Integer>(); for (int i = 0; i < 100; i++) list.add(i); int index = Collections.binarySearch(list, key); System.out.println("탐색의 반환값 : " + index); } }
notion image
Share article