본문 바로가기

JAVA의 정석

Arrays로 배열 다루기

 

Arrays 클래스의 주요 메서드

메서드 설명
boolean Arrays.equals(배열 , 배열) [다차원 시 deepEquals] 배열 A와 배열 B가 같은 값을 담고 있는지 리턴해준다.
Arrays.toString(배열)  [다차원 시 deepTostring] 반복문 없이 배열의 값들을 리턴해준다.
Arrays.copyOf(배열, int to)  배열의 처음부터 지정된 곳 까지 배열을 복사해준다. (to 미포함)
Arrays.copyOfRange(배열, int from , int to)  지정된 곳 부터 지정된 곳 까지 배열을 복사해준다.  (to 미포함)
Arrays.sort(배열)  배열을 작은 수 부터 큰 수로 정렬해준다.

 

1) 배열의 비교와 출력 - equals() ,  toString()

 

앞 장에서 String 클래스를 다루었다면 이번에는 Arrays 클래스 배열을 다루어보도록 하자.

 

2차원 배열 생성은 위처럼 한 행 씩 묶어서 생성한다. 

 

toString을 통해 반복문 없이도 배열안의 값들을 쉽게 출력하는 모습을 볼 수 있다. 하지만 1차원 배열이 아닌 다차원 배열부터는

 

그냥 toString이 아닌 deepToString을 이용해야만 정상적으로 메서드가 호출된다. 

 

 

1차원 배열일 때는 .equals()를  사용할 수 있지만, 다차원 배열에서부터는 deepEquals()를 사용해야만 비교하는 모습을 알 수 있다.

 

 

2) 배열의 복사 - copyOf(), copyOfRange() 

 

copyOf()는 배열의 전체 값을 copyOfRange()는 배열의 일부를 복사해서 배열의 값을  반환한다. 

 

 

arr2는 기존 array의 배열을 배열의 길이의 끝까지 복사한 배열이다.

 

copyOf()메서드는 배열의 처음부터 지정하는 곳 까지 배열의 값을 복사해준다.  반면 copyOfRange() 메서드는 지난 번 String 클래스서

 

다루었던 subString(int from int to)와 같이 배열의 범위를 복사해준다. 이때 to는 포함하지 않는 것 까지 같다. 프로그램 실행 결과는

 

다음과 같다. 

 

 

 

3) 배열의 정렬 - sort() 

 

 

배열을 정렬할 때는 sort()를 통해 손쉽게 정렬할 수 있다.

 

 

 

 

String 클래스를 다룰 때에는 st.charAt, st.CharArray,st.length,st.equals,st.substring 이런식으로 생성하였던 변수 뒤에 .을

 

붙여 메서드를 호출 하였지만 , Arrays 클래스를 다룰 때에는 String 클래스와 다르게 , Arrays.메서드(배열명) 이런 식으로 다루었다. 

 

처음에는 이 부분이 많이 헷갈렸지만 Arrays클래스를 Math 클래스 같은 관점으로 보고, String 클래스가 유난히 특이하다고 생각하는게

 

헷갈리지 않을 거 같다는 생각이 들었다.