배열과 ArrayList

2024. 1. 9. 17:21Java 기초개념

for(String fruit : fruits) {
	System.out.println(fruit);
}​
numbers[0] = 1;
numbers[1] = 2;

배열

배열은 동일한 타입의 여러 데이터를 연속적인 메모리 공간에 저장하는 데 사용되는 기본적인 자료구조이다.

Java 배열은 "객체"로 취급되며, 선언된 후에는 크기가 고정된다.

배열의 선언, 생성 및 초기화 예시

int[] numbers = new int[5]; // 5개의 정수를 저장할 수 있는 배열 선언, 초기화되지 않음
numbers[0] = 1; // 첫 번째 요소에 값 전달
numbers[1] = 2; // 두 번째 요소에 값 전달

String[] fruits = {"apple", "banana", "mango"}; // 초기값이 있는 문자열 배열

 

배열은 크게 초기화된 배열, 초기화되지 않은 배열로 나눌 수 있다.

첫 번째 배열은 초기화되지 않은 배열이다.

따라서 각 요소에 값을 "직접" 전달해야 한다. 

 

numbers[0] = 1;
numbers[1] = 2;

 

두 번째 배열은 초기화된 배열이다.

초기화된 배열은 초기값이 있는 문자열 배열이기 때문에 값 추가를 해주지 않아도 된다.

단, 초기화되면서 자동으로 크기가 지정되기 때문에, 추가적으로 값을 부여하는 것이 불가능하다.

 

배열의 길이 알아내기

int length = numbers.length; // 배열의 길이

 

배열 순회

for(int i = 0; i < numbers.length; i++) {
	System.out.println(numbers[i]);
}
for(String fruit : fruits) {
	System.out.println(fruit);
}

 

배열을 순회하는 방법은 크게 2가지가 있다.

첫 번째는, 배열의 길이를 활용하는 방법이다.

배열의 길이는 .length를 이용해 알아낼 수 있다.

 

두 번째는, 향상된 for문을 이용하는 방법이다.

특정 변수인 "fruit"를 활용해 fruits 배열을 순회할 수 있다.

 

ArrayList

ArrayList는 Java의 'java.util' 패키지에 있는 컬렉션 클래스이다.

내부적으로는 배열을 사용하여 데이터를 저장하지만, 배열과 달리 필요에 따라 크기가 자동 조정된다.

 

ArrayList의 주요 특징에는 총 5가지가 있다.

 

1. 가변 크기 : 요소가 추가되거나 제거될 때 내부 배열의 크기를 자동으로 조정

2. 인덱스 기반 접근 : 인덱스를 통해 리스트의 요소에 빠르게 접근

3. 동일한 타입 : 제네릭을 지원하며, 지정된 타입의 객체만을 저장

4. 순서 유지 : 추가된 요소는 삽입된 순서대로 유지

5. 중복 허용 : 중복된 요소의 저장을 허용

 

import java.util.ArrayList;

public class Main {
	public static void main(String[] args) {
    	ArrayList<Integer> numbers = new ArrayList<>();
        
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        //요소 추가
        
        int num = numbers.get(0);
        // 특정 인덱스의 요소 접근
        
        int size = numbers.size();
        // 크기 얻기
        
        for(int i = 0; i < numbers.size(); i++) {
        	System.out.println(numbers.get(i));
        }
        // 반복문을 통한 요소 접근
        
        for(int number : numbers) {
        	System.out.println(number);
        }
        // 향상된 for 문을 사용한 순회
        
        numbers.remove(Integer.valueOf(2));
        numbers.remove(0);
        // 요소 제거 
     }
}