Java에서의 동적 배열(ArrayList) 활용
Java에서 동적 배열은 ArrayList를 사용합니다. 이번 시간에는 ArrayList의 기본적인 사용법 및 활용법을 알아보도록 하겠습니다.
다음은 Java에서의 ArrayList를 생성하고 사용하는 기본적인 예시입니다:
import java.util.ArrayList; // ArrayList 클래스를 사용하기 위해 import 합니다.
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>(); // Integer 타입의 ArrayList를 생성합니다.
numbers.add(1); // ArrayList에 요소를 추가합니다.
numbers.add(2);
numbers.add(3);
System.out.println(numbers); // ArrayList의 내용을 출력합니다. 출력: [1, 2, 3]
numbers.remove(1); // 인덱스 1의 요소를 제거합니다.
System.out.println(numbers); // ArrayList의 내용을 출력합니다. 출력: [1, 3]
int num = numbers.get(0); // 인덱스 0의 요소를 가져옵니다.
System.out.println(num); // 출력: 1
}
}
위 예시에서는 Integer 타입의 ArrayList를 생성하고, add() 메소드를 통해 요소를 추가하였습니다. 그리고 remove() 메소드를 통해 특정 인덱스의 요소를 제거하였으며, get() 메소드를 통해 특정 인덱스의 요소를 가져왔습니다. 이처럼 ArrayList는 동적으로 요소를 추가하거나 제거할 수 있으며, 인덱스를 통해 특정 요소에 빠르게 접근할 수 있습니다.
ArrayList의 Type변환
자바에서는 ArrayList를 사용하며 타입을 변경하는 경우가 종종 있습니다.
그 상황에 대한 예시를 아래에 정리했습니다:
ArrayList와 List의 변환
List를 ArrayList로 변환
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); // List 생성
ArrayList<Integer> arrayList = new ArrayList<>(list); // ArrayList 변환
System.out.println(arrayList); // 출력: [1, 2, 3, 4, 5]
}
}
위의 예시에서는 Arrays.asList()를 통해 List를 생성하고, 이를 ArrayList로 변환하였습니다.
ArrayList를 List로 변환
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList<>(); // ArrayList 생성
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
arrayList.add(4);
arrayList.add(5);
List<Integer> list = new ArrayList<>(arrayList); // List 변환
System.out.println(list); // 출력: [1, 2, 3, 4, 5]
}
}
위의 예시에서는 ArrayList를 생성하고, 이를 List로 변환하였습니다. Java에서는 ArrayList가 List 인터페이스를 구현하므로, ArrayList는 그 자체로 List 인터페이스의 참조 변수에 할당될 수 있습니다. 따라서 별도의 변환 과정 없이 ArrayList를 List로 사용할 수 있습니다.
ArrayList와 배열의 변환
배열을 ArrayList로 변환
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
Integer[] array = new Integer[]{1, 2, 3, 4, 5}; // Integer 배열 생성
ArrayList<Integer> arrayList = new ArrayList<>(Arrays.asList(array)); // ArrayList 변환
System.out.println(arrayList); // 출력: [1, 2, 3, 4, 5]
}
}
위의 예시에서는 Arrays.asList()를 통해 배열을 List로 변환하고, 이를 ArrayList로 변환하였습니다.
ArrayList를 배열로 변환
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList<>(); // ArrayList 생성
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
arrayList.add(4);
arrayList.add(5);
Integer[] array = new Integer[arrayList.size()];
array = arrayList.toArray(array); // 배열 변환
System.out.println(Arrays.toString(array)); // 출력: [1, 2, 3, 4, 5]
}
}
위의 예시에서는 ArrayList.toArray() 메소드를 사용하여 ArrayList를 배열로 변환하였습니다.
ArrayList와 다중배열의 변환
다중 배열을 ArrayList로 변환하는 것은 간단하지 않습니다.다중 배열을 ArrayList로 변환하려면 먼저 각각의 하위 배열을 ArrayList로 변환하고, 그 다음 이렇게 변환된 ArrayList들을 또 다른 ArrayList에 넣어야 합니다. 즉, 이 과정을 거치면 최종적으로 ArrayList<ArrayList<Integer>> 형태의 구조를 가지게 됩니다.
아래는 이를 구현한 예시들 입니다:
다중배열(Integer)을 ArrayList로 변환
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Integer[][] multiArray = new Integer[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 다중배열 생성
ArrayList<ArrayList<Integer>> arrayList = new ArrayList<>(); // ArrayList 생성
for (Integer[] subArray : multiArray) {
ArrayList<Integer> subList = new ArrayList<>(Arrays.asList(subArray));
arrayList.add(subList);
}
System.out.println(arrayList); // 출력: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
}
}
위의 예시에서는 별도의 ArrayList로 변환하고, 이들을 다시 하나의 ArrayList에 넣어 전체 배열을 ArrayList로 변환하였습니다. 단, 위 배열은 wrapper class인 Integer로 int형 다중 배열을 변환할 때는 다른 방식을 사용해야 합니다.
다중배열(int)을 ArrayList로 변환
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
int[][] multiArray = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // int형 다중배열 생성
ArrayList<ArrayList<Integer>> arrayList = new ArrayList<>(); // ArrayList 생성
for (int[] subArray : multiArray) {
ArrayList<Integer> subList = new ArrayList<>();
for (int num : subArray) {
subList.add(num); // int형을 Integer로 자동 박싱(autoboxing)합니다.
}
arrayList.add(subList);
}
System.out.println(arrayList); // 출력: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
}
}
위의 예시에서는 각 int형 하위 배열의 모든 요소를 반복하여 ArrayList에 추가하였습니다. 이때, Java에서는 int형을 Integer로 자동 박싱(autoboxing)하여 ArrayList에 추가할 수 있습니다. 이렇게 하면 int형 다중 배열을 ArrayList로 변환할 수 있습니다.
'Java > Data Structure(Java)' 카테고리의 다른 글
Java에서의 해시(Hash) 활용 (1) | 2023.12.07 |
---|---|
Java에서의 트리(Tree) 활용 (0) | 2023.12.06 |
Java에서의 큐(Queue) 활용 (1) | 2023.12.06 |
Java에서의 스택(Stack) 활용 (0) | 2023.12.06 |
Java에서의 연결 리스트(LinkedList) 활용 (0) | 2023.12.06 |