안녕하세요, 스코리아입니다.
이전 시간에는 1차원 배열과 2차원 배열 선언, 초기화 방법에 대해서 알아보았습니다.
[이전 내용] 1차원 배열 선언, 초기화 방법: https://skorea6.tistory.com/14
[이전 내용] 2차원 배열 선언, 초기화 방법: https://skorea6.tistory.com/16
오늘은 자바 ArrayList 선언 방법과 주요 메소드를 사용하는 방법에 대해서 알아보겠습니다.
ArrayList vs 기존 배열
- 기존의 배열 선언과 사용 방식은 배열의 길이를 정하고 요소의 개수가 배열의 길이보다 커지면 배열을 재할당하고 복사해야 했습니다.
- 즉, 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 따른 번거로운 구현이 필요했습니다.
- ArrayList는 배열의 크기(길이)를 신경 필요가 없습니다.
- ArrayList는 배열을 더 효율적으로 관리하기 위해 자바에서 제공해 주는 클래스입니다.
- ArrayList는 Collection 프레임워크의 일부로서, java.util 패키지에서 제공됩니다
ArrayList 특징
- ArrayList는 객체가 추가돼서 용량이 초과되면 자동으로 부족한 크기의 용량만큼 용량이 늘어납니다.
- 이미 많은 메소드들이 최적의 알고리즘으로 구현되어 있어서, 각 메소드의 사용 방법만 익히면 유용하게 사용 가능합니다.
ArrayList 선언하기
// 타입 설정없이
ArrayList list1 = new ArrayList();
// Integer 타입
ArrayList<Integer> list2 = new ArrayList<Integer>();
// 객체 타입
ArrayList<Book> list3 = new ArrayList<Book>();
// Integer 타입 + 초기값
ArrayList<Integer> list4 = new ArrayList<Integer>(Arrays.asList(1, 2, 3));
- import java.util.* 을 선언해 주셔야, ArrayList 사용이 가능합니다.
- 타입 설정 없이 선언하는 방법도 있습니다.
- 특정 타입을 명시해 주려면 <Integer> , <String>와 같은 식으로 적어주시면 됩니다.
- 타입으로 객체도 들어갈 수 있습니다.
- 앞쪽에 타입을 명시했다면, 뒤쪽 <>에는 타입을 생략할 수 있습니다.
- 예제와 같이, 초기값을 설정할 수도 있습니다.
ArrayList의 주요 메소드
메소드 | 설명 |
boolean add(E e) | 요소 하나를 배열에 추가합니다. (E는 요소의 자료형을 의미) |
boolean add(int index, E e) | 요소 하나를 배열의 특정 index 위치에 추가합니다. |
int size() | 배열에 추가된 요소의 전체 개수를 반환 |
E get(int index) | 배열의 index 위치에 있는 요소 값을 반환 |
void set(int index, E e) | 배열의 index 위치에 있는 요소 값을 변경 |
E remove(int index) | 배열의 index 위치에 있는 요소 값을 제거하고 그 값을 반환 |
E remove(E e) | 배열의 값을 찾아 그 요소를 제거하고 그 값을 반환 |
void clear() | 배열 안의 모든 값을 삭제 |
boolean isEmpty() | 배열이 비어있는지 확인 (비어있으면 true, 아니면 false) |
boolean contains(E e) | 배열에 값이 있는지 확인 (값이 있으면 true, 없으면 false) |
int indexOf(E e) | 배열의 값을 통해 index 위치를 반환 (값이 없으면 -1) |
ArrayList 사용 방법 (예제)
- ArrayList의 주요 메소드를 활용해서 예제를 만들어보았습니다.
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
// ------ add --------
list.add("Java"); // 추가
list.add("ArrayList");
list.add(1, "Test");
System.out.println("[값 추가 후] " + list);
// ------ set --------
list.set(1, "Korea"); // 변경
System.out.println("[값 변경 후] " + list);
// ------ size --------
System.out.println("[배열의 크기] " + list.size());
// ------ for문 --------
System.out.print("[배열 출력하기] ");
for(String s : list){
System.out.print(s + " # ");
}
System.out.println();
// ------ contains, indexOf --------
System.out.println("[값 검색(contains)] " + list.contains("Korea")); // true
System.out.println("[값 검색(indexOf)] " + list.indexOf("Monday")); // 값이 없으면 -1
// ------ remove, clear --------
list.remove(1);
System.out.println("[값 삭제 후 - 1] " + list);
list.remove("Java");
System.out.println("[값 삭제 후 - 2] " + list);
list.clear();
System.out.println("[값 전체 삭제 후] " + list);
// ------ isEmpty --------
System.out.println("[배열 비었는지] " + list.isEmpty());
}
}
지금까지 자바(Java)의 ArrayList 의미/특징과, 주요 메소드를 사용하는 방법을 예제와 함께 알아보았습니다.
읽어주셔서, 감사합니다.
'JAVA > 문법' 카테고리의 다른 글
자바 2차원 배열 선언, 초기화 방법 (array) (1) | 2023.08.22 |
---|---|
자바 객체 배열 선언/구현하기 + 얕은복사, 깊은복사 방법 (1) | 2023.08.21 |
자바 1차원 배열 선언, 초기화 방법 (array) (1) | 2023.08.19 |
자바 기본형 타입 vs 참조형 타입 차이점 정리 (1) | 2023.08.11 |