자배 컬렉션에서 리스트에 데이터를 추가한 뒤 더 이상 데이터 삭제, 추가를 막기 위해서는 Collection에서 제공하는 unmodifiableList를 활용하면 된다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class TestUnmodifiableList {
public static void main(String[] args) {
List<Character> list = new ArrayList<>();
list.add('a');
list.add('b');
list.add('c');
list.add('d');
try {
list.forEach(System.out::println);
list = Collections.unmodifiableList(list); //추가, 삭제행위가 금지된다.
list.remove(1); //오류발생
list.add('e'); //오류발생
System.out.println(list);
} catch (Exception e) {
e.printStackTrace();
}
}
}
위 프로세스에서 remove나 add를 만나게되면 아래의 오류가 발생한다.
java.lang.UnsupportedOperationException
완벽하게 해당 배열은 Read-Only가되버렸다.
물론, null 값이나 다른 배열을 통해서 초기화는 가능하다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class TestUnmodifiableList {
public static void main(String[] args) {
List<Character> list = new ArrayList<>();
list.add('a');
list.add('b');
list.add('c');
list.add('d');
try {
list.forEach(System.out::println);
list = Collections.unmodifiableList(list); //추가, 삭제행위가 금지된다.
System.out.println(list);
} catch (Exception e) {
e.printStackTrace();
}
//배열을 다시 수정 가능한 배열로
List<Character> newList = new ArrayList<>(list);
newList.add('z');
System.out.println(newList);
}
}
반응형
'Java(자바)' 카테고리의 다른 글
Java 1.8 컬렉션 stream, filter, map, foreach, sort (0) | 2019.07.15 |
---|---|
Java HashMap 반복문(loop) (0) | 2019.07.11 |
Java synchronized, ReentrantLock, semaphore (0) | 2019.06.13 |
Java poi 스타일 적용 및 적용이 되지 않는 경우 (10) | 2019.05.28 |
Java 1.8 Optional 그리고 stream (0) | 2019.05.20 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글