배열 (Array)

배열이란 ❓

자료구조 중 하나로, 동일한 타입의 데이터들을 저장하고 고정된 크기를 가지고 있는 데이터 저장 공간.
인덱싱이 되어 있어서, index의 번호로 데이터에 접근이 가능함
장점
- 빠른 접근이 가능해서 데이터를 조회할 때 쓰면 좋다!
- 연속된 메모리 공간에 요소를 저장하므로 메모리 공간을 효율적으로 사용할 수 있다.
- 다차원 배열로 선언이 가능하다.
단점
- 크기 제한이 있어서 배열을 선언한 후 크기 변경이 불가하다.
배열 크기를 미리 생각하고 만들어야 함 - 데이터들이 연속된 공간에 저장되기 때문에 중간에 삽입과 삭제가 어렵다.
중간 삽입과 삭제를 할 경우, 그 이후 위치 데이터들을 모두 옮겨야 한다.
즉 데이터를 조회할 때 사용하면 유리하지만 삽입 삭제를 많이 해야하는 작업을 할 경우에는 불리하다.
선언 방법
int[] arr = new int[배열의 크기];
int[] arr1 = {1, 2, 3, 4};
값 넣기
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
값 참조
arr[0]; // 1
System.out.println(arr[1]); // 2
System.out.print(arr); // 출력하면 값이 나오는 것이 아닌 메모리 주소가 출력됨
// 반복문을 이용해서 배열의 값들을 출력하기
for(int i = 0; i < arr.length; i++){
System.out.println(arr[i]);
}
// 메서드를 이용해서 배열 값들을 출력하기
System.out.print(Arrays.toString(arr));
char형 배열은 따로 다른 작업 없이 출력해줘도 된다.
배열 길이
arr.length;
정렬
Arrays.sort()
오름차순 정렬
int[] arr = [2,5,6,1,8];
Arrays.sort(arr); // 1, 2, 5, 6, 8
내림차순 정렬
내림차순은 기본 타입의 배열을 래퍼클래스로 만들고 정렬해야한다.
즉 기본 타입 배열일 때 적용이 불가하다.
- 기본 타입: int, byte, char, double, short, int, float
- 래퍼클래스: 기본 자료형의 데이터를 인스턴스로 만들기 위해 사용하는 클래스 (Integer, Long, Character, Boolean 등)
Integer[] arr = [2,5,6,1,8];
Arrays.sort(arr, Collections.reverseOrder());
// stream을 이용한 내림차순
arr = Arrays.stream(arr)
.boxed()
.sorted(Comparator.reverseOrder())
.mapToInt(Integer::intValue)
.toArray();
Max, Min 구하기
// stream을 이용한 방법
int arr[] = {2, 6, 8, 3, 9};
int max = Arrays.stream(arr).max().getAsInt();
int min = Arrays.stream(arr).min().getAsInt();
2차원 배열

열과 행으로 구성되어 있는 테이블 형태 배열이다.
선언
int[][] intArr = new int[2][3]; // 배열[행][열]
intArr[0][0] = 1;
intArr[0][1] = 2;
int[][] intArr2 = {
{1, 2, 3},
{4, 5, 6}
};
출력
for(int i = 0; i < intArr.length; i++){ // 열 순회
for(int j = 0; j < intArr[i].length; j++){ // 행 순회
System.out.print(intArr[i][j]);
}
}
참고 링크 및 자료
https://hoehen-flug.tistory.com/28
https://jin-network.tistory.com/127
https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%9E%90%EB%B0%94-%EB%B0%B0%EC%97%B4Array-%EB%AC%B8%EB%B2%95-%EC%9D%91%EC%9A%A9-%EC%B4%9D%EC%A0%95%EB%A6%AC
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
https://www.tcpschool.com/java/java_array_twoDimensional