조이 생각

반응형

배열을 리스트로 변환하고 인덱스로 특정 위치의 데이터를 삭제하는데 에러가 발생하는 경우에 대해 다뤄본다.

 

배열을 리스트로 변환하는 방법

[필요한 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));

 

[결과]

맨 앞과 맨 뒤의 {, } 자리가 삭제되어 출력되는 것을 볼 수 있다.

 

 

[참고 자료]

https://freedeveloper.tistory.com/223

https://stackoverflow.com/questions/43020075/java-util-arrays-aslist-when-used-with-removeif-throws-unsupportedoperationexcep

반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band
loading