Collections 클래스는 여러가지 유용한 알고리즘을 구현한 메서드를 제공한다.
1. 정렬sort
데이터를 어떤 기준에 의하여 순서대로 나열하는 것이다.
리스트의 원소가 String 타입이면 알파벳 순, Date 는 시간 순서로 정렬이 될 것이다.
public class SortTest { public static void main(String[] args) { String[] s = {"walk", "apple", "milk", "hello"}; Integer[] in = {10, 5, 71, 15, 35}; for (int i = 0; i < s.length; i++) { System.out.print(s[i] + " "); } System.out.println(); List<String> list1 = Arrays.asList(s); Collections.sort(list1); System.out.println(list1); System.out.println(); for (int i = 0; i < in.length; i++) { System.out.print(in[i] + " "); } System.out.println(); List<Integer> list2 = Arrays.asList(in); Collections.sort(list2); System.out.println(list2); } }
Arrays.asList 로 배열을 리스트로 변환했다. Collections.sort 를 호출하면 리스트를 정렬할 수 있다.
2. 섞기shuffle
리스트에 존재하는 정렬을 파괴시켜서 원소들의 순서를 랜덤하게 만든다.
public class Shuffle { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for (int i = 0; i <= 10; i++) { list.add(i); } System.out.println(list); Collections.shuffle(list); System.out.println(list); Collections.shuffle(list); System.out.println(list); } }
3. 탐색 binarySearch
리스트 내부의 원하는 자료를 찾는 것이다. 리스트가 정렬되어 있지 않아면 모든 자료를 탐색하는 선형 탐색으로 할 수 밖에 없다. 하지만 리스트가 정렬이 되어있다면 , 중간 원소를 기준으로 크기를 반으로 줄일 수 있다. 이진 검색은 이전 내용에 정리했다.
public class SerchTest { public static void main(String[] args) { int num = 11; List<Integer> list = new ArrayList<>(); for (int i = 1; i < 21; i++) { list.add(i); } System.out.println(list); System.out.println("타겟값:" + num); int index = Collections.binarySearch(list, num); System.out.println("타겟의 위치: " + index); } }
Share article