📖 자바의정석에서 배운 내용을 바탕으로 작성(Java 7 기준으로 작성)
java.util.Arrays :: 배열을 다루기 편리한 Static 메소드 제공 |
asList
- 배열을 List로 변환
- asList로 만들어진 List는 원소 추가(add)불가 및 값 변경 시 원본 배열 값도 변경됨
- 원소 추가 및 원본 배열 유지를 위해선 new List 사용
String[] strArr1 = {"aa", "bb", "cc"};
List<String> list1 = Arrays.asList(strArr1);
list1.set(0, "hi");
list1.add("dd"); // java.lang.UnsupportedOperationException
System.out.println(Arrays.toString(strArr1)); // [hi, bb, cc]
System.out.println(list1.toString()); // [hi, bb, cc]
String[] strArr2 = {"aa", "bb", "cc"};
List<String> list2 = new ArrayList<String>(Arrays.asList(strArr2));
list2.set(0, "hi");
list2.add("dd");
System.out.println(Arrays.toString(strArr2)); // [aa, bb, cc]
System.out.println(list2.toString()); // [hi, bb, cc, dd]
toString(), deepToString()
- 배열 element 출력
- 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@15db9742, [I@6d06d69c]
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([] original, int newLength)
original = 원본 배열, newLength = 새 배열 길이
Arrays.copyOfRange([] original, int form, int to)
original = 원본 배열, from = 시작 인덱스, to = 끝 인덱스(해당 인덱스 전까지만 포함)
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.println(Arrays.toString(intArr)); // [1, 1, 1, 1, 1]
sort()
- 배열 정렬
int[] intArr = {3, 2, 5, 1, 4};
Arrays.sort(intArr); // 오름차순
System.out.println(Arrays.toString(intArr)); // [1, 2, 3, 4, 5]
Integer[] integerArr = {3, 2, 5, 1, 4};
Arrays.sort(integerArr, Collections.reverseOrder()); // 내림차순
System.out.println(Arrays.toString(integerArr)); // [5, 4, 3, 2, 1]
Arrays.sort(integerArr, Comparator.reverseOrder()); // 내림차순
System.out.println(Arrays.toString(integerArr)); // [5, 4, 3, 2, 1]
String[] strArr = {"c", "d", "b", "a", "e"};
Arrays.sort(strArr, Collections.reverseOrder()); // 내림차순
System.out.println(Arrays.toString(strArr)); // [e, d, c, b, a]
Arrays.sort(strArr, Comparator.reverseOrder()); // 내림차순
System.out.println(Arrays.toString(strArr)); // [e, d, c, b, a]
String[] stirngArr = {"HI", "HELLO", "BYE"};
Arrays.sort(stirngArr, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length(); // 글자 수로 정렬
}
});
System.out.println(Arrays.toString(stirngArr)); // [HI, BYE, HELLO]
binarySearch()
- 배열 검색
- 사용 전 배열이 정렬(sort)되어 있어야 함
int[] intArr = {3, 2, 1, 5, 4};
Arrays.sort(intArr); // 검색 사용 전 정렬
int idx = Arrays.binarySearch(intArr, 3);
System.out.println(idx); // 2
Arrays (Java Platform SE 7 )
Returns a string representation of the "deep contents" of the specified array. If the array contains other arrays as elements, the string representation contains their contents and so on. This method is designed for converting multidimensional arrays to st
docs.oracle.com
'Programing > JAVA & JSP' 카테고리의 다른 글
[JAVA] jdk 21 설치 및 환경변수 설정 (0) | 2024.02.14 |
---|---|
[Java] try with resources (0) | 2021.02.05 |