본문 바로가기
Java

자바(Java) 배열 , 향상된 for문(for-each문)

by 임혁진 2024. 10. 22.

향상된 for문 (for-each)

for-each 문은 배열이나 컬렉션 같은 데이터 구조에서 각 요소를 간단히 반복하기 위한 문법입니다.

기존의 for문과 달리 인덱스 없이 요소만 처리할 수 있어 코드가 깔끔해집니다.

기본 형식:

for (데이터타입 변수 : 배열명/리스트명) {
    // 반복할 코드
}

예제:

int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
    System.out.println(num);
}
  • numbers 배열의 각 요소가 **num**에 할당되어 반복문이 실행됩니다.
  • 인덱스 필요 없이 배열을 순회할 수 있어 간결합니다.

배열 값 추가하기

Java의 기본 배열은 크기가 고정되어 값을 추가하려면 새로운 배열을 만들어야 합니다. 크기가 고정되지 않은 자료 구조를 사용하려면 ArrayList 같은 컬렉션을 사용하는 것이 좋습니다.

배열에 값 추가 (배열 크기 확장):

int[] arr = {1, 2, 3};
int[] newArr = Arrays.copyOf(arr, arr.length + 1);  // 배열 크기를 1 늘림
newArr[newArr.length - 1] = 4;  // 마지막에 새 값 추가

ArrayList를 사용한 값 추가:

ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));
list.add(4);  // 값 추가

배열 요소 찾기

배열에서 특정 값을 찾을 때는 Arrays.binarySearch() 또는 반복문을 사용할 수 있습니다.

반복문을 이용한 배열 요소 찾기:

int[] arr = {3, 6, 9, 12, 15};
int target = 9;
boolean found = false;
for (int num : arr) {
    if (num == target) {
        found = true;
        break;
    }
}
System.out.println(found ? "찾음" : "못 찾음");

Arrays.binarySearch() 사용 (배열이 정렬된 경우):

int[] sortedArr = {3, 6, 9, 12, 15};
int index = Arrays.binarySearch(sortedArr, 9);
if (index >= 0) {
    System.out.println("찾음, 인덱스: " + index);
} else {
    System.out.println("못 찾음");
}
  • 이진 탐색은 배열이 정렬되어 있을 때 빠르게 값을 찾는 방법입니다.

배열의 복사

배열을 복사할 때는 Arrays.copyOf()를 사용하여 크기를 변경하거나, 깊은 복사를 수행할 수 있습니다.

배열 복사:

int[] arr = {1, 2, 3};
int[] copiedArr = Arrays.copyOf(arr, arr.length);  // 배열 복사
  • Arrays.copyOf()를 이용하면 원래 배열을 새로운 배열로 복사할 수 있습니다.

배열의 정렬

배열을 정렬하려면 Arrays.sort() 메서드를 사용합니다.

배열 정렬:

int[] arr = {5, 3, 8, 1};
Arrays.sort(arr);  // 배열 정렬
System.out.println(Arrays.toString(arr));  // [1, 3, 5, 8]

2차원 배열

2차원 배열은 배열 안에 배열이 있는 형태로, 행(row)과 열(column)로 데이터를 저장합니다.

2차원 배열 선언 및 초기화:

int[][] matrix = new int[3][4];  // 3행 4열 배열

값 할당:

matrix[0][0] = 1;  // 첫 번째 행, 첫 번째 열에 값 할당

2차원 배열 초기화와 출력:

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

for (int[] row : matrix) {
    for (int col : row) {
        System.out.print(col + " ");
    }
    System.out.println();
}
  • 2차원 배열의 각 요소에 접근할 때는 중첩된 for문을 사용합니다.

정리

  • 향상된 for문은 배열 및 컬렉션에서 요소를 쉽게 반복할 수 있게 해줍니다.
  • 배열의 크기 변경이 필요할 경우 Arrays.copyOf()를 사용하거나, 가변 크기 리스트인 ArrayList를 사용하는 것이 좋습니다.
  • 이진 탐색정렬된 배열에서 빠른 검색이 가능하며, 배열 복사 및 정렬은 각각 Arrays.copyOf()Arrays.sort()로 가능합니다.
  • 2차원 배열은 배열 안에 배열을 담을 수 있으며, 주로 행렬 구조 데이터를 처리할 때 사용됩니다.