본문 바로가기
Programing/JAVA & JSP

[Java] Arrays 클래스 (java.util.Arrays)

by 미미믹 2021. 2. 5.

📖 자바의정석에서 배운 내용을 바탕으로 작성(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

 

728x90

'Programing > JAVA & JSP' 카테고리의 다른 글

[JAVA] jdk 21 설치 및 환경변수 설정  (0) 2024.02.14
[Java] try with resources  (0) 2021.02.05