Java
[Java] array 를 ArrayList 로 변환 방법/ 인덱스 remove 에러 해결 방법 (remove, java.lang.UnsupportedOperationException)
joy.seo
2022. 2. 9. 10:09
반응형
배열을 리스트로 변환하고 인덱스로 특정 위치의 데이터를 삭제하는데 에러가 발생하는 경우에 대해 다뤄본다.
배열을 리스트로 변환하는 방법
[필요한 import]
import java.util.List;
import java.util.Arrays;
String[] lines = json.split(System.getProperty("line.separator"));
List<String> lineList = Arrays.asList(lines);
필자의 경우 String > split 으로 String[] 문자열 데이터 타입의 배열을 만들어 List로 변환해주었다.
remove(index) 적용시 나타나는 에러
array 를 list 로 변환하여 remove 메소드를 사용해 보았다.
lines = json.split(System.getProperty("line.separator"));
List<String> lineList = Arrays.asList(lines);
lineList.remove(0);
lineList.remove(lineList.size()-1);
맨 앞과 뒤에 데이터를 삭제하려고 index 기반의 remove를 사용하였는데, 아래와 같은 에러가 발생하였다.
에러 원인과 해결 방법
- 원인 : Arrays.asList 로 생성한 리스트는 고정되어있어 원소를 제거할 수 없다고 함.
- 해결 방법 : new ArrayList<>()로 Arrays.asList 를 감싸서 생성 해야함.
수정된 코드
[필요한 import]
import java.util.ArrayList;
List<String> lineList = new ArrayList<>(Arrays.asList(lines));
System.out.println("--- 삭제 전 ---");
for(int i=0; i < lineList.size(); i++)
System.out.println(lineList.get(i));
lineList.remove(0);
lineList.remove(lineList.size()-1);
System.out.println("--- 삭제 후 ---");
for(int i=0; i < lineList.size(); i++)
System.out.println(lineList.get(i));
[결과]
맨 앞과 맨 뒤의 {, } 자리가 삭제되어 출력되는 것을 볼 수 있다.
[참고 자료]
반응형