ArrayList는 배열에서 좀 더 발전된 형태이다. 공부하면서 array만 썼는데 ArrayList를 알고 나서 매우 편하다는 걸 알게 되었다.
ArrayList에 대해 알아보자.
ArrayList란?
Collection 프레임워크의 일부이며 java.util 패키지에 소속되어 있다.
표준 배열보다는 느리지만 배열에서 많은 조작이 필요한 경우 유용하게 사용할 수 있다.
ArrayList는 자바의 List 인터페이스를 상속받는 여러 클래스 중 하나이다.
일반 배열과 동일하게 연속된 메모리 공간을 사용하며 인덱스는 0부터 시작한다.
![]()
배열과의 차이점은 배열의 크기가 고정인 반면 ArrayList는 크기가 가변적으로 변한다.
내부적으로 저장이 가능한 메모리 용량이 있으며 현재 사용 중인 공간의 크기가 있다.
만약 현재 가용량 이상을 저장하려고 할 때 더 큰 공간의 메모리를 새롭게 할당한다.
ArrayList 선언과 생성
선언
import java.util.ArrayList;
생성
ArrayList<Integer> integers1 = new ArrayList<Integer>(); // 타입 지정
ArrayList<Integer> integers2 = new ArrayList<>(); // 타입 생략 가능
ArrayList<Integer> integers3 = new ArrayList<>(10); // 초기 용량(Capacity) 설정
ArrayList<Integer> integers4 = new ArrayList<>(integers1); // 다른 Collection값으로 초기화
ArrayList<Integer> integers5 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); // Arrays.asList()
주로 타입으로 선언을 많이하고, 추가로 다른 타입(String, Character) 등의 타입으로 선언이 가능하다.
타입을 선언하면 해당 타입의 데이터만 추가가 가능하다.
ArrayList 값 추가와 변경
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> colors = new ArrayList<>();
// add() method
colors.add("Black");
colors.add("White");
colors.add(0, "Green");
colors.add("Red");
// set() method
colors.set(0, "Blue");
System.out.println(colors);
}
}
add()는 기본적으로 리스트의 가장 끝에 값을 추가한다.
별도로 인덱스를 지정하면 해당 인덱스에 값이 추가되고 그 인덱스부터의 값들이 1칸씩 밀린다.
결과값: [Bluse, Black, White, Red]
다른 예시를 보자
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<>();
al.add("Hello");
al.add("Hello");
al.add(1, "World");
System.out.print(al);
}
}
결과
[Hello, World, Hello]
ArrayList 값 삭제
ArrayList 값을 삭제하는 방법에는 두 가지가 있다.
remove()와 clear()이다.
clear()는 ArrayList의 모든 값을 삭제할 때 사용된다.
remove()는 값을 하나씩 제거할 때 사용된다.
remove()에서도 두 개의 사용법이 있다.
remove(Object): Object를 파라미터로 넘기는 경우 해당 ArrayList의 Object와 같은 값을 삭제한다. 만약 같은 값이 두 개 이상인 경우 첫 번째 같은 값을 제거한다
remove(int index): ArrayList의 index에 해당하는 값을 삭제한다.
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<>();
al.add("Hello");
al.add("World");
al.add("Hello");
al.add("World");
System.out.println("초기값 : " + al);
al.remove("Hello");
System.out.println("1번 삭제 : " + al);
al.remove(1);
System.out.println("2번 삭제 : " + al);
al.clear();
System.out.println("3번 삭제 : " + al);
}
}
결과
초기 값: [Hello, World, Hello, World]
1번 삭제: [World, Hello, World]
2번 삭제: [World, World]
3번 삭제: []
AttayList 값 출력
ArrayList의 결과를 출력하는 방법에는 get(int index) 메서드가 있다.
index를 입력하면 해당 Index의 데이터가 출력된다.
전부 출력하고 싶다면 for문과 향상된 for문을 사용하여 출력할 수 있다.
추가로 Iterator를 사용하여 출력할 수도 있다.
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<>();
al.add("Hello");
al.add("World");
al.add("Hello");
al.add("World");
for (int i = 0; i < al.size(); i++) {
System.out.print(al.get(i) + " ");
}
System.out.println();
for (String str : al)
System.out.print(str + " ");
System.out.println();
Iterator iter = al.iterator();
while(iter.hasNext()){
System.out.print(iter.next() + " ");
}
}
}
결과
Hello World Hello Wrold
Hello World Hello Wrold
Hello World Hello Wrold
ArrayList 값 검색
값을 검색하는 방법에는 contains와 indexOf()가 있다.
contains는 값이 있는 경우 true를, 값이 없는 경우 false를 리턴한다.
indexOf()를 사용하면 값의 위치 Index를 찾아주고 값이 없다면 -1을 리턴하기 때문에 별도로 처리가 가능하다.
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<>();
al.add("Hello");
al.add("World");
al.add("Hello");
al.add("World");
System.out.println("값 검색(contains) : " + al.contains("Hello"));
System.out.println("값 검색(indexOf) : " + al.indexOf("World"));
}
}
결과
값 검색(contains) : true
값 검색(indexOf) : 1
'Java' 카테고리의 다른 글
| [Java] 어노테이션(Annotation) (1) | 2022.11.24 |
|---|---|
| [Java] HashMap (0) | 2022.11.23 |
| [Java] Reflection(리플렉션) 이란? (0) | 2022.11.03 |
| [Java] 싱글톤 패턴 (0) | 2022.11.02 |
| [Java] 컬렉션 프레임워크 (0) | 2022.10.31 |