[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

YunSeolAn