πŸ—„οΈ Backend/Java

μžλ°”(Java) - API 클래슀 (7) Arrays 클래슀

kongmi 2023. 1. 27. 19:44

듀어가기에 μ•žμ„œ..

java.util νŒ¨ν‚€μ§€

  • java.util νŒ¨ν‚€μ§€μ—λŠ” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆλŠ” μœ μš©ν•œ μœ ν‹Έλ¦¬ν‹° ν΄λž˜μŠ€κ°€ λ‹€μˆ˜ ν¬ν•¨λ˜μ–΄ 있음
  • μ‹€μ œλ‘œ java.lang νŒ¨ν‚€μ§€ λ‹€μŒμœΌλ‘œ κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” νŒ¨ν‚€μ§€
  • import문을 μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ μ‚¬μš©ν•  수 μžˆλŠ” java.langκ³Ό 달리 java.util νŒ¨ν‚€μ§€λŠ” import 문으둜 νŒ¨ν‚€μ§€λ₯Ό λΆˆλŸ¬μ™€μ•Ό 클래슀 μ΄λ¦„λ§Œ μ‚¬μš© κ°€λŠ₯

java.util.Arrays 클래슀

  • Arrays ν΄λž˜μŠ€μ—λŠ” 배열을 닀루기 μœ„ν•œ λ‹€μ–‘ν•œ λ©”μ†Œλ“œκ°€ ν¬ν•¨λ˜μ–΄ 있음

binarySearch() λ©”μ†Œλ“œ

  • 이뢄 검색 μ•Œκ³ λ¦¬μ¦˜(λ°˜μ”© λ²”μœ„λ₯Ό μͺΌκ°œλ©° 검색) μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— μ •λ ¬(sort())이 λ˜μ–΄ μžˆμ–΄μ•Ό 함!!
  • ν•΄λ‹Ή μœ„μΉ˜ λ°˜ν™˜

🐸 sort() λ©”μ†Œλ“œ

μ˜€λ¦„ 차순 μ •λ ¬

  • sort() λ©”μ†Œλ“œλŠ” 전달받은 λ°°μ—΄μ˜ λͺ¨λ“  μš”μ†Œλ₯Ό μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•©λ‹ˆλ‹€.
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] arr = {5,1,2,3,4};
        Arrays.sort(arr);
        for(int e : arr) System.out.print(e + " ");
    }
}
1 2 3 4 5

⭐ λ‚΄λ¦Ό 차순 μ •λ ¬

compare() μ˜€λ²„λΌμ΄λ”© ν•΄μ„œ μ‚¬μš©
import java.util.Arrays;
import java.util.Comparator;

public class Main {
    public static void main(String[] args) {
        Integer[] arr = {5,1,2,3,4};
        Arrays.sort(arr, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                if(o1 < o2) return 1;
                return -1;
            }
        });
        for(int e : arr) System.out.print(e + " ");
    }
}

 

5 4 3 2 1

asList() λ©”μ†Œλ“œ

  • 일반 배열을 ArrayList둜 λ³€ν™˜
List<int[]> list = Arrays.asList(arr);

πŸ’‘ μ—°μŠ΅λ¬Έμ œ

  • λ°°μ—΄μ˜ 갯수 μž…λ ₯
  • 찾을 수 μž…λ ₯
  • λ°°μ—΄μ˜ μš”μ†Œλ₯Ό λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜κ³ , 찾을 수의 인덱슀 좜λ ₯ν•˜λΌ.
  • λ°°μ—΄μ˜ μš”μ†Œλ₯Ό μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ ν›„ 찾을 수의 인덱슀λ₯Ό 좜λ ₯ν•˜λΌ.
λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ ν›„ μ‹€ν–‰ν•˜λ©΄ ν‹€λ¦° 값이 계속 좜λ ₯λ˜λŠ” 문제 발견!
μ•Œμ•„λ³΄λ‹ˆ..binarySearch()λŠ” μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬λœ λ°°μ—΄μ—μ„œ ν‚€ 값을 μ°ΎλŠ”λ‹€κ³  함.
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int key = sc.nextInt();
        Integer[] arr = new Integer[num];
        for(int i = 0; i < arr.length; i++) {
            arr[i] = (int)(Math.random() * num) + 1;
        }
        Arrays.sort(arr);
        for(int e : arr) System.out.print(e + " ");
        System.out.println();
        int rst = Arrays.binarySearch(arr,key);
        if(rst >= 0)System.out.println("인덱슀 : " + rst);
        else System.out.println("μ°ΎλŠ” 값이 μ—†μŠ΅λ‹ˆλ‹€.");
    }
}
10
5
1 3 4 5 5 6 7 8 9 10 
인덱슀 : 4

πŸ’‘ μ—°μŠ΅λ¬Έμ œ2

  • μž„μ˜μ˜ 과일 이름 10개의 λ°°μ—΄ 생성
  • 길이 순으둜 μ •λ ¬ν•˜κ³ , 길이가 κ°™μœΌλ©΄ μ‚¬μ „μˆœμœΌλ‘œ μ •λ ¬ ν›„ 좜λ ₯ν•˜λΌ
    (compareTo() λ©”μ†Œλ“œ μ‚¬μš©)
import java.util.Arrays;
import java.util.Comparator;

public class Practice {
    public static void main(String[] args) {
        String[] fruit = {"cherry", "banana", "pear", "lemon", "watermelon", "orange", "apple",
                "blueberry", "strawberry", "tomato"};
        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;
            }
        });
        for(String e : fruit) System.out.print(e + " ");
    }
}
pear apple lemon banana cherry orange tomato blueberry strawberry watermelon
μŒμˆ˜κ°’μ΄λ©΄ ν˜„ μƒνƒœ μœ μ§€, μ–‘μˆ˜λ©΄ μ •λ ¬ν•˜λΌ..λ₯Ό μ΄μš©ν•΄μ„œ returnλ¬Έ μ‘°μ •

🐸 compareTo() μ—°μŠ΅

public class Main {
    public static void main(String[] args) {
        String test = "abcd";
        System.out.println(test.compareTo("ab"));
        System.out.println(test.compareTo("abcd"));
        System.out.println(test.compareTo("abcdefg"));
2
0
-3

λΉ„κ΅ν•˜λŠ” 값이 μž‘μœΌλ©΄ μ–‘μˆ˜
λΉ„κ΅ν•˜λŠ” κ°’κ³Ό κ°™μœΌλ©΄ 0
λΉ„κ΅ν•˜λŠ” 값이 크면 음수