java.util.Arrays
Arrays 클래스는 항목 정렬, 항목 검색, 항목 비교와 같은 메소드들을 제공한다
모든 메소드는 static(정적) 메소드이므로, Arrays 클래스로 바로 사용이 가능하다
asList()
- 배열을 List로 변환
- asList로 만든 List는 원소 추가/변경 불가
- 원소 추가/변경시 new List 사용
String[] blackpink1 = {"jennie", "lisa", "rose"};
List<String> list1 = Arrays.asList(blackpink1);
list.set(0, "jisoo");
list.add("yerin") // java.lang.UnsupportedOperationException (add 불가)
System.out.println(Arrays.toString(blackpink1)); // // [jisoo, lisa, rose]
System.out.println(list1.toString()); // [jisoo, lisa, rose]
String[] blackpink2 = {"jennie", "lisa", "rose"};
List<String> list2 = new ArrayList<String>(Arrays.asList(blackpink2));
list2.set(0, "jisoo");
list2.add("yerin"); // 새로운 리스트 객체 생성시 add 가능
System.out.println(Arrays.toString(blackpink2)); // // [jisoo, lisa, rose]
System.out.println(list2.toString()); // [jisoo, lisa, rose, yerin]
toString(), deepToString()
- 배열 요소 출력
- 1차원 배열일 경우 toString 사용, 다차원 배열일 경우 deepToString 사용
- 다차원배열에 toString 사용 시, 에러는 나지 않지만 주소값 출력
int[] intStr1 = {1, 2, 3};
System.out.println(Arrays.toString(intStr1)); // [1, 2, 3]
int[][] intStr2 = {{1, 2, 3}, {4, 5, 6}};
System.out.println(Arrays.toString(intStr2)); // [[I@726f3b58, [I@442d9b6e]
System.out.println(Arrays.deepToString(intStr2)); // [[1, 2, 3], [4, 5, 6]]
equals(), deepEquals()
- 배열 비교
- 1차원 배열일 경우 equals사용, 다차원 배열일 경우 deepEquals사용
int[] intStr1 = {1, 2, 3};
int[] compStr1 = new int[]{1, 2, 3};
System.out.println(Arrays.equals(intStr1, compStr1)); // true
int[][] intStr2 = {{1, 2, 3}, {4, 5, 6}};
int[][] compStr2 = new int[][]{{1, 2, 3}, {4, 5, 6}};
System.out.println(Arrays.equals(intStr2, compStr2)); // false
System.out.println(Arrays.deepEquals(intStr2, compStr2)); // ture
copyOf(), copyOfRange()
- 배열 복사
- 원본 배열보다 큰 길이의 배열로 복사할 경우 값이 없는 배열 값에 int의 경우 0, String의 경우 null로 채워짐
Arrays.copyOf([] 복사할 배열, int 새 배열 길이);
Arrays.copyOfRange([] 복사할 배열, int 시작 인덱스, int 끝 인덱스(해당 인덱스 전까지만 포함));
int[] intArr1 = {1, 2, 3};
int[] intArr2 = Arrays.copyOf(intArr1, 2);
int[] intArr3 = Arrays.copyOf(intArr1, 5);
int[] intArr4 = Arrays.copyOfRange(intArr1, 0, 3);
int[] intArr5 = Arrays.copyOfRange(intArr1, 0, 5);
System.out.println(Arrays.toString(intArr2)); // [1, 2]
System.out.println(Arrays.toString(intArr3)); // [1, 2, 3, 0, 0]
System.out.println(Arrays.toString(intArr4)); // [1, 2, 3]
System.out.println(Arrays.toString(intArr5)); // [1, 2, 3, 0, 0]
fill()
- 배열 채우기
int[] intArr = new int[5];
Arrays.fill(intArr, 1); //채울 배열, 채울 값
System.out.printfln(Arrays.toString(intArr)); //[1,1,1,1,1]
sort()
- 배열 정렬
import java.util.Arrays;
public class Sort{
public static void main(String[] args) {
//오름차순
int arr1[] = {4,23,33,15,17,19};
Arrays.sort(arr1); //[4, 15, 17, 19, 23, 33]
//부분정렬 (인덱스 0~3만 정렬)
Arrays.sort(arr, 0, 4); //[4, 15, 23, 33]
String arr2[] = {"apple","orange","banana","pear","peach","melon"};
Arrays.sort(arr2); //["apple", "banana", "melon", "orange", "peach", "pear"]
//내림차순, Collections 클래스의 reverseOrder() 함수를 사용
Integer arr3[] = {4,23,33,15,17,19};
Arrays.sort(arr3, Collections.reverseOrder()); //[33, 23, 19, 17, 15, 4]
String arr[] = {"apple","orange","banana","pear","peach","melon"};
Arrays.sort(arr, Collections.reverseOrder());
//["pear", "peach", "orange", "melon", "banana", "apple"]
}
}
배열을 만들거나 복사, 정렬할 때 사용하기 좋은 라이브러리
다음에 잘 써먹어봐야지^^~
'Java' 카테고리의 다른 글
[Java] Int와 Integer의 차이 (1) | 2022.09.21 |
---|---|
[Java] StringBuffer와 StringBuilder 개념과 사용법 (0) | 2022.09.20 |
[Java] HashMap 사용법 (0) | 2022.09.13 |