728x90
List에서 Array로 변환
toArray() 메서드 사용.
import java.util.ArrayList;
import java.util.List;
public class ListToArray {
public static void main(String[] args) {
// List 생성
List<String> list = new ArrayList<>();
list.add("Test1");
list.add("Test2");
list.add("Test3");
// List를 Array로 변환
String[] array = list.toArray(new String[list.size()]);
// 출력
for (String value : array) System.out.println(value);
}
}
Array에서 List로 변환
asList() 메서드 사용.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayToList {
public static void main(String[] args) {
// Array 생성
String[] array = new String[3];
array[0] = "test1";
array[1] = "test2";
array[2] = "test3";
// Array를 List로 변환
List<String> list = new ArrayList<>(Arrays.asList(array));
// 출력
for (String value : list) System.out.println(value);
}
}
※ Fixed-size List
Arrays.asList를 사용해서 간편하게 만들어낸 마치 Array처럼 고정된 크기의 List를 만들어 낸다.
이 List는 값을 변경할 수는 있지만, 크기에 영향을 주는 추가/삭제 (add/remove) 작업은 할 수 없다.
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7);
list.set(0,5); // 가능
list.add(5); // error
list.remove(0); // error
Arrays.asList로 생성하면 fixed-size list가 되므로 LinkedList를 새로 생성해서 삭제가 가능한 List로 만들어 낼 수 있다.
List<Integer> list = new LinkedList<>(Arrays.asList(1,2,3,4,5,6,7));
※ List 요소 삭제 시 주의사항
List 사용 시 loop를 돌면서 삭제하게 되는 경우 주의해야 한다.
List<Integer> list = new LinkedList<>(Arrays.asList(1,2,3,4,5,6,7));
for (int i = 0; i < list.size(); i++) {
list.remove(i);
}
System.out.println(list); // [2,4,6]
Arrays.asList를 LinkedList를 새로 생성해서 삭제가 가능하게 했다.
for문에서 i가 index값으로 list요소를 삭제하지만, 삭제할 때 마다 List의 size가 줄어들면서 index값도 변동하기 때문에 예상하는 결과 값을 얻을 수 없다.
List<Integer> list = new LinkedList<>(Arrays.asList(1,2,3,4,5,6,7));
for (int i = 0; i < list.size(); i++) {
list.remove(0);
}
System.out.println(list); // [5, 6, 7]
항상 index 0의 값을 삭제해도 원하는 값을 얻을 수 없다.
i 가 증가하면서 size도 감소하기 때문에 어느 정도 loop가 진행되고 나면 i 가 size 이상의 값이 되고 loop가 멈추게 된다.
Solution
List<Integer> list = new LinkedList<>(Arrays.asList(1,2,3,4,5,6,7));
int listSize = list.size();
for (int i = 0; i < listSize; i++) {
list.remove(0);
}
System.out.println(list); // []
int 변수를 생성하여 (loop를 돌기 이전) 초기의 List size 값을 잡아두고 loop의 반복회수를 고정시켜 원하는 값을 얻을 수 있다.
'JAVA' 카테고리의 다른 글
[JAVA] 객체지향 프로그래밍 - 클래스 기초 (0) | 2024.11.03 |
---|---|
[Java] 📚 문자열 형변환 Object to String : Casting, valueOf, toString (1) | 2023.03.05 |
[Java] 📚 배열 정렬하기 Arrays.sort() (0) | 2022.08.17 |
[Java] 📚 BufferedReader / BufferedWriter를 활용한 빠른 입출력 (3) | 2022.05.28 |
[Java] 📚 String / StringBuffer / StringBuilder (1) | 2022.05.22 |