본문 바로가기
java

[java] 배열

by 개발LOG 2024. 6. 4.

배열의 특징

가장 대표적인 자료구조 입니다. 데이터를 순차적으로 저장해 0부터 시작하는 인덱스를 통해 접근할 수 있습니다.

  • 일반적으로 배열은 선언할때 크기가 고정됨.
  • 데이터를 순차적으로만 접근할 수 있어 위치를 모르는 경우 효율이 떨어짐.
  • 배열에 들어가는 데이터는 모두 동일한 자료형 이어야 함.
  • 배열 중간에 값을 추가하려면 기존 데이터를 모두 이동시켜야 함.

배열 선언 및 데이터 사용

int scores[] = {95,100,87,91};
int[] scores = {95,100,87,91};
int[] scores = new int[4];
scores[2] = 90; // 3번째 요소(87)을 90으로 변경.

System.out.println(scores[0]);
  • 자바에서 배열선언시 타입[] 변수명 혹은 타입 변수명[] 형식을 모두 사용할 수 있음.
  • 배열선언시 크기를 지정하거나 초기 데이터로 크기가 고정됨.
  • 배열원소에 접근은 배열명[인덱스] 형식으로 사용.
  • 인덱스는 0부터 시작.
  • 배열.length 를 통해 배열의 크기를 구할 수 있음.

배열의 주요 메서드

자바에서 배열을 다루기 위한 메서드는 Arrays 클래스에 정의되어 있습니다. 따라서 배열과 관련된 처리를 위해서는 Arrays 클래스의 메서드를 활용할 수 있습니다.

  • 배열은 크기가 고정되어 있고 데이터를 다루기가 불편함.
  • 따라서 List 등으로 변경해서 처리할 필요가 있음.
  • Arrays 클래스의 모든 메서드는 static 이므로 인스턴스 생성 없이 사용 가능.
  • java.util 패키지 import가 필요함.

asList()

  • 배열을 ArrayList 로 반환해 자바 컬렉션 API를 사용할 수 있다.
  • 다만 반환되는 ArrayList 는 크기가 고정된 타입으로 새롭게 값을 추가할수 없다.
String[] cars = {"hyundai","bmw","benz","toyota"};
ArrayList car_list = Arrays.asList(cars);

toString()

  • 모든 자바 Object 에 포함된 메서드로 기본은 Object ID를 출력함.
  • 배열 자체를 System.out.println() 등에서 출력하면 데이터가 출력되지 않고 Object ID가 출력됨.
  • Arrays.toString()을 이용하면 데이터를 출력할 수 있음.
System.out.println(cars);  // Object ID가 출력됨.
System.out.println(Arrays.toString(cars));  // ["hyundai","bmw","benz","toyota"]

sort()

  • 배열원소를 정렬한다. 원본 배열 자체가 원소들이 정렬된 순서로 변경됨.
  • sort(array, Comparator), sort(array, int fromindex, int toindex)​를 이용해 내림차순 정렬 및 구간 정렬 등이 가능하다.
  • 구간 정렬의 경우 fromindex ~ toindex-1 까지를 범위로 함.
Arrays.sort(cars);  // [benz, bmw, hyundai, toyota]
Arrays.sort(cars, Collections.reverseOrder());  // [toyota, hyundai, bmw, benz]
Arrays.sort(cars, 0,2); // [hyundai, toyota, bmw, benz]

copyOf()

  • 배열을 복사해서 새로운 배열로 반환.
  • copyOfRage() 는 특정 범위만 반환.
  • 구간 복사의 경우 fromindex ~ toindex-1 까지를 범위로 함.
// 앞의 마지막 예제 결과에 이어짐.
String[] cars_copied = Arrays.copyOf(cars);  //[hyundai, toyota, bmw, benz]
String[] cars_copied = Arrays.copyOfRange(cars, 0,2);   // [hyundai, toyota]