그것은 마법처럼 작동합니다
List<String> list = new ArrayList<String>();
list.add("abc");
list.add(null);
list.add("def");
list.removeAll(Collections.singletonList(null));
System.out.println(list); //[abc, def]
가 실제로
Collections.singletonList(null)
은 불변 (불행히도 자바
에 숨겨져 [1]하는)하지만 예외가 당신의
list
변수에서 발생합니다. 분명히 그것은 아래의 예처럼,뿐만 아니라 불변 :
이
List<String> list = Arrays.asList("abc", null, "def");
list.removeAll(Collections.singletonList(null));
이 코드 는UnsupportedOperationException
발생합니다. 그래서 당신이 볼 수 있듯이 singletonList()
이이 경우에 유용합니다. 클라이언트 코드가 읽기 전용 목록을 기대할 때 (그것을 수정하지는 않지만) 오직 하나의 요소 만 전달하고자 할 때 사용하십시오. singletonList()
은 빠르고 안정적인 (나사 고정식) 안전하고 신속합니다.
[1] 예 : scala에는 변경 가능하고 변경 불가능한 콜렉션에 대한 separete 계층 구조가 있으며 API는 이것을 받아들이는지 또는 다른 것을 받아들이는지 선택할 수 있습니다 (공통 기본 인터페이스를 가지고 있기 때문에 둘 다)
목록을 어떻게 선언 했습니까? Arrays.asList() 사용? 그렇다면 불변이 될 것입니다. – Murugesh