본문 바로가기
☕Java

[Java 이해하기] 13. Java의 배열 (2)

by Luvbit 2024. 5. 24.


 

 

저번 포스팅에서 배열에 대한 설명을 이어가겠습니다!

 

 

 

🚇 배열의 장점

 

1. 효율적인 데이터 관리

배열은 동일한 데이터 타입의 여러 값을 하나의 구조로 저장할 수 있어 데이터를 효율적으로 관리할 수 있습니다. 

예를 들어, 학생의 점수나 제품의 가격 등과 같은 데이터를 배열로 관리하면 코드가 간결해지고 관리가 용이해집니다

 

 

2. 고정된 메모리 사용

배열은 고정된 크기를 가지므로 메모리를 효율적으로 사용할 수 있습니다. 배열을 초기화할 때 필요한 메모리가 한 번에 할당되므로, 메모리 관리가 용이합니다.

 

 

3. 빠른 데이터 접근

배열의 요소는 인덱스를 통해 직접 접근할 수 있으므로, 매우 빠른 데이터 접근이 가능합니다. 이는 특히 데이터의 크기가 크거나 접근이 빈번한 경우 성능 향상에 도움이 됩니다.

int[] numbers = {1, 2, 3, 4, 5};
int value = numbers[2]; // 인덱스를 통해 빠르게 접근

 

 

4. 간결한 코드

배열을 사용하면 여러 개의 변수를 하나의 배열로 관리할 수 있어 코드가 간결해집니다. 반복문을 사용하여 배열의 모든 요소에 대해 작업을 수행할 수 있으므로 코드의 반복을 줄이고 가독성을 높일 수 있습니다.

int[] scores = {90, 85, 70, 80, 95};
for (int i = 0; i < 5; i++) {
    System.out.println("score: " + scores[i]);
}

print >>
socre : 90
socre : 85
socre : 70
socre : 80
socre : 95

 

 

5. 다차원 데이터 관리

배열은 다차원 배열을 통해 복잡한 데이터 구조를 관리할 수 있습니다. 예를 들어, 행렬이나 테이블 형태의 데이터를 배열로 관리하면 데이터의 구조화와 접근이 용이해집니다.

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

int value = matrix[1][2]; // 2차원 배열에서 데이터 접근

 

 

6. 데이터 그룹

배열을 사용하면 논리적으로 관련된 데이터를 그룹화할 수 있습니다. 이는 데이터 처리를 체계적으로 하고, 관련된 데이터를 함께 처리하는 데 유리합니다.

String[] names = {"Alice", "Bob", "Charlie"};
int[] ages = {25, 30, 22};

// 관련된 데이터를 그룹화하여 관리
for (int i = 0; i < names.length; i++) {
    System.out.println(names[i] + " is " + ages[i] + " years old.");
}

 

 

7. 표준 라이브러리와의 호환성

자바의 많은 표준 라이브러리와 API들이 배열을 사용하여 데이터를 처리합니다. 배열을 사용하면 이러한 라이브러리와 쉽게 호환될 수 있습니다.

import java.util.Arrays;

int[] numbers = {3, 1, 4, 1, 5};
Arrays.sort(numbers); // 표준 라이브러리의 메서드를 사용하여 배열 정렬
System.out.println(Arrays.toString(numbers));

print >>
[1, 1, 3, 4, 5]

 

 

 


 

 

🚇 배열의 유용한 메서드

 

배열의 길이를 구하는 length를 제외하고 다른 메서드 사용하기 위해서는 `java.util.Arrays` 클래스와 같은 유틸리티 클래스를 사용해야 합니다.

import java.util.Arrays;

 

 

1. 배열의 길이

배열의 길이를 알 수 있는 length 속성은 배열의 크기를 반환합니다. 이는 메서드가 아니라 속성(attribute)입니다.

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        System.out.println("배열의 길이: " + numbers.length); // 배열의 길이: 5
    }
}

 

 

2. 배열의 정렬

배열을 오름차순으로 정렬합니다.

import java.util.Arrays;

int[] numbers = {5, 3, 8, 1, 2};
Arrays.sort(numbers);

System.out.println(Arrays.toString(numbers)); // [1, 2, 3, 5, 8]

 

 

3. 배열을 String으로 변환

배열의 내용을 문자열로 변환하여 저장합니다.

import java.util.Arrays;

String[] rabbits = {"pipi", "cucu", "popo", "pupu", "cici"};
System.out.println(Arrays.toString(rabbits)); // [pipi, cucu, popo, pupu, cici]

 

 

4. 배열 복사 (copyOf, copyOfRange)

배열의 모든 또는 일부 요소를 새 배열로 복사합니다.

import java.util.Arrays;

int[] original = {1, 2, 3};
int[] copy = Arrays.copyOf(original, original.length);
int[] partialCopy = Arrays.copyOfRange(original, 1, 3);

System.out.println(Arrays.toString(copy)); // [1, 2, 3]
System.out.println(Arrays.toString(partialCopy)); // [2, 3]

 

 

5. 배열 채우기

배열의 모든 요소를 지정한 값으로 초기화합니다.

import java.util.Arrays;

int[] numbers = new int[5];
Arrays.fill(numbers, 7);

System.out.println(Arrays.toString(numbers)); // [7, 7, 7, 7, 7]

 

 

6. 배열 비교 (equals, deepEquals)
두 배열이 같은지 비교합니다. deepEquals는 다차원 배열을 비교할 때 사용합니다.

import java.util.Arrays;

int[] array1 = {1, 2, 3};
int[] array2 = {1, 2, 3};
int[] array3 = {4, 5, 6};

System.out.println(Arrays.equals(array1, array2)); // true
System.out.println(Arrays.equals(array1, array3)); // false

int[][] deepArray1 = {{1, 2}, {3, 4}};
int[][] deepArray2 = {{1, 2}, {3, 4}};
System.out.println(Arrays.deepEquals(deepArray1, deepArray2)); // true

 

 

7. 배열 검색
배열에서 특정 값을 이진 검색으로 찾습니다. 배열이 정렬되어 있어야 합니다.

import java.util.Arrays;

int[] numbers = {1, 2, 3, 4, 5};
int index = Arrays.binarySearch(numbers, 3);

System.out.println(index); // 2 (값 3의 인덱스)

 

 

8. 기타 등등

이 외에도 deepToString, hashCode, deppHashCode 등이 있습니다.

빈번하게 사용되는 메서드를 정리했습니다. 추후 배열로 프로그래밍하실 때 참고해 주세요.

 

 

 

 

 

배열은 동일한 타입의 데이터를 효율적으로 관리하게 해 줍니다.
다음 게시글에서는 배열로 구구단 만들기 실습으로 찾아뵙겠습니다.

궁금하신 점은 댓글을 남겨주세요
🩵🐰🩵