📖 자바의정석에서 배운 내용을 바탕으로 작성(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
'Programing > JAVA & JSP' 카테고리의 다른 글
[JAVA] jdk 21 설치 및 환경변수 설정 (0) | 2024.02.14 |
---|---|
[Java] try with resources (0) | 2021.02.05 |