Arrays 클래스

hovi·2023년 5월 30일
0

JAVA

목록 보기
18/36

java.util 패키지

java.util 패키지에는 프로그램을 개발하는 데 사용할 수 있는 유용한 유틸리티 클래스가 다수 포함되어 있습니다.

실제로 java.lang 패키지 다음으로 가장 많이 사용되는 패키지가 java.util 패키지입니다.

하지만 import 문을 사용하지 않아도 바로 사용할 수 있는 java.lang 패키지와는 달리 java.util 패키지는 import 문으로 패키지를 불러오고 나서야 클래스 이름만으로 사용할 수 있습니다.

java.util.Arrays 클래스

Arrays 클래스에는 배열을 다루기 위한 다양한 메소드가 포함되어 있습니다.

binarySearch() 메소드

binarySearch() 메소드는 전달받은 배열에서 특정 객체의 위치를 이진 검색 알고리즘을 사용하여 검색한 후, 해당 위치를 반환합니다.

이 메소드는 이진 검색 알고리즘을 사용하므로, 매개변수로 전달되는 배열이 sort() 메소드 등을 사용하여 미리 정렬되어 있어야만 제대로 동작합니다.

System.out.println(Arrays.binarySearch(arr, 5));

sort() 메소드

오름 차순 정렬

sort() 메소드는 전달받은 배열의 모든 요소를 오름차순으로 정렬합니다.

int[] arr = {5, 3, 4, 1, 2};
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
}

내림 차순 정렬

Arrays.sort(arr, Collections.reverseOrder());

정렬 오버라이딩


Arrays.sort(arr, new Comparator<Integer>() {
    @Override
    public int compare(Integer i1, Integer i2) {
        if(i1 > i2) return 1; // 오름 차순
				// if(i1 < i2) return 1; // 내림 차순
    }
});

연습문제

임의의 10개의 과일이름 입력 후 길이 순으로 정렬하기. 길이가 같으면 사전순으로 정렬하기

👉 **compareTo()** 함수는 두개의 값을 비교하여 int 값으로 반환해주는 함수이다.
  • 코드 보기
    public static void main(String[] args) {
        String[] fruit = {"Kiwi", "Orange", "Apple", "Banana", "Melon",
                "Mango", "Watermelon", "Cherry", "Plum", "Peach"};
        Arrays.sort(fruit, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                if(o1.length() > o2.length()) return 1; // 첫번째가 두번째 보다 길이가 길면 정렬 조건
                else {
                    if(o1.length() == o2.length()) {
                        return o1.compareTo(o2); // 두번째가 사전순서상 앞에 있으면 양수
                    }
                    return -1; // 현 상태 유지
                }
            }
        });
        System.out.println(Arrays.toString(fruit));
    }

asList()

List<String> list = Arrays.asList(arr);

일반 배열을 ArrayList로 변환 한다.

연습 문제

Scanner sc = new Scanner(System.in);
  System.out.print("배열의 갯수 : ");
  int num = sc.nextInt();
  int[] arr = new int[num];
  System.out.println("찾을 수를 입력 : ");
  int key = sc.nextInt();
  for(int i = 0; i < arr.length; i++) {
      arr[i] = (int)(Math.random() * num) + 1;
  }
  Arrays.sort(arr);
  for(int val : arr) System.out.print(val + " ");
  System.out.println();
  int result = Arrays.binarySearch(arr, key);
  if(result >= 0) System.out.println(result);
profile
풀스택 예비 개발자

0개의 댓글