배열 (Array)

profile image 스이연 2025. 2. 10. 00:18

배열이란 ❓

 

자료구조 중 하나로, 동일한 타입의 데이터들을 저장하고 고정된 크기를 가지고 있는 데이터 저장 공간.
인덱싱이 되어 있어서, 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