본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Java(자바)

Java List unmodifiableList (final 같은 배열)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 6. 21.

 

 

자배 컬렉션에서 리스트에 데이터를 추가한 뒤 더 이상 데이터 삭제, 추가를 막기 위해서는 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);

	}
}

 

 

 

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글