지난번 추상 클래스 / 추상 메소드 (abstract)에
이어서 이번글에서는 Collections 클래스에 대해서
알아보겠습니다.
Collections 클래스는 기본적으로
List기반의 클래스들에서 작동하는 클래스입니다.
(예: ArrayList, LinkedList 등등)
그렇기 때문에 Collections 클래스를 활용하기
위해서는 우선 배열에 대한 이해가 필수적입니다.
혹시 배열에 대해서 헷갈리거나 아직 공부하지 않으신
분들이 있다면 아래 링크 참고 부탁드립니다.
http://jaythecode.tistory.com/16
자바(JAVA) 기초 함께 알아보자(16) - ArrayList(배열)
지난번 캡슐화(Encapsulation)에 이어서 이번글에서는ArrayList에 대해서 알아보겠습니다. ArrayList에 대해서 알아보기 위해서는 Array에 대해서알아야합니다. 혹시 기억이 나지 않으시는 분들은 아래
jaythecode.tistory.com
Collections 클래스
먼저 Collections 클래스에 대해서
간단하게 알아보겠습니다.
Collections 클래스의 역할은 아래와 같습니다.
1. 배열의 정렬 (Sort)
2. 무작위로 배열 순서 변경 (Shuffle)
3. 배열의 요소 찾기 (Search)
4. 배열 순서 뒤집기 (Reverse)
변형하여 더 많은 기능을 사용할 수 있지만
이 글에서는 가장 자주 쓰이는 4가지 기능에
대해서 알아보겠습니다.
Sort
먼저 Sort에 대해서 알아보겠습니다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class CollectionsExample1{
public static void main(String[] args){
Integer[] num = {6, 8, 3, -145, -200, 186, 15, 61};
ArrayList<Integer> arrayList = new ArrayList<>(Arrays.asList(num));
System.out.println("Not Sorted");
System.out.println(arrayList);
System.out.println("------------------------");
Collections.sort(arrayList);
System.out.println("After sorting");
System.out.println(arrayList);
}
}
위 코드를 실행시켜보시면 무작위로 나열된
배열 num이 Collections.sort() 코드 이후에
작은 수부터 차례대로 나열된 것을
확인할 수 있습니다.
Shuffle
다음으로는 Shuffle에 대해서 알아보겠습니다.
Collections.shuffle()을 사용하면
배열이 무작위로 나열되는 모습을 확인할 수 있습니다.
아래 코드와 사진으로 알아보겠습니다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class CollectionsExample1{
public static void main(String[] args){
Integer[] num = {6, 8, 3, -145, -200, 186, 15, 61};
ArrayList<Integer> arrayList = new ArrayList<>(Arrays.asList(num));
System.out.println("Not Sorted");
System.out.println(arrayList);
System.out.println("------------------------");
Collections.sort(arrayList);
System.out.println("After sorting");
System.out.println(arrayList);
System.out.println("------------------------");
Collections.shuffle(arrayList);
System.out.println("After Shuffle");
System.out.println(arrayList);
}
}
위 코드에 Collections.shuffle(arrayList)를 추가하면
아래 사진과 같이 작은 수부터 나열되어 있던 배열이
무작위로 섞이게 됩니다.
Reverse
다음으로는 Reverse에 대해서 알아보겠습니다.
Collections.reverse()를 사용하면 배열이
역순으로 나열되는 것을 확인할 수 있습니다.
sort와 연계하여 큰 수부터 나열하고 싶을때
요긴하게 사용되는 코드입니다.
아래 예시를 살펴보겠습니다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class CollectionsExample1{
public static void main(String[] args){
Integer[] num = {6, 8, 3, -145, -200, 186, 15, 61};
ArrayList<Integer> arrayList = new ArrayList<>(Arrays.asList(num));
System.out.println("Not Sorted");
System.out.println(arrayList);
System.out.println("------------------------");
Collections.sort(arrayList);
System.out.println("After sorting");
System.out.println(arrayList);
System.out.println("------------------------");
Collections.reverse(arrayList);
System.out.println("After reverse");
System.out.println(arrayList);
}
}
아래 사진으로 결과를 확인해 보면
-200, -145 ... 이렇게 나열된 배열이
186, 61, ... 으로 거꾸로 나열된 것을
확인할 수 있습니다.
Search
그럼 마지막으로 Collections를 사용한
배열 안의 element를 찾는 것을 알아보겠습니다.
먼저 search를 사용하기 전에 주의해야 할 것은
이 메소드는 오직 나열된 List에서만
작동하는 메소드입니다!
그렇기 때문에 sort를 꼭 사용한 후에
search를 사용해야 합니다.
아래 예시에서는 편의를 위해
나열된 배열을 가지고 확인해 보겠습니다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class CollectionsExample2{
public static void main(String[] args){
Integer[] num2 = {2, 4, 8, 16, 32, 64, 128, 256, 512, 1024};
ArrayList<Integer> arrayList2 = new ArrayList<>(Arrays.asList(num2));
int lookingValue = 128;
int lookingIndex = Collections.binarySearch(arrayList2, lookingValue);
// lookingIndex -> 6
System.out.println("lookingIndex: " + lookingIndex + " | lookingValue: " + num2[lookingIndex]);
}
}
위 코드를 실행시켜 보면 아래 사진과 같이
binarySearch()를 이용하면
찾고 있는 값의 index 값을 손쉽게 얻을 수 있다는
것을 확인할 수 있습니다.
그럼 지금까지 Collections 클래스에 대해서
알아보았습니다.
Collections 클래스는 List의 기초를 충분히 익힌
상태에서 사용한다면 배열을 자유자재로
나열하고 거기서 원하는 값을 뽑아낼 수 있는
유용한 도구라고 생각합니다.
다음 글에서는 Collections클래스의 연장선인
Comparator 인터페이스에 대해서 알아보겠습니다.
'자바(JAVA) 기초 함께 알아보자' 카테고리의 다른 글
자바(JAVA) 기초 함께 알아보자(28) - Comparator (2) | 2025.02.15 |
---|---|
자바(JAVA) 기초 함께 알아보자(26) - 추상 클래스/추상 메소드 (abstract) (0) | 2025.02.11 |
자바(JAVA) 기초 함께 알아보자(25) - 다중 상속 / 인터페이스(Interface) (0) | 2025.02.09 |
자바(JAVA) 기초 함께 알아보자(24) - 다형성(Polymorphism) (0) | 2025.01.23 |
자바(JAVA) 기초 함께 알아보자(23) - 함수 오버로딩(Method Overloading) (2) | 2025.01.16 |