programing

Java의 Collections.singletonList()를 사용하시겠습니까?

minecode 2022. 8. 11. 21:40
반응형

Java의 Collections.singletonList()를 사용하시겠습니까?

의 용도는 무엇입니까?Collections.singletonList()자바어?하나의 요소가 포함된 목록을 반환하는 것으로 알고 있습니다.내가 왜 다른 방법을 원하겠어?여기서 불변은 어떤 역할을 할까요?

이 방법은 편리한 방법 이외에 특별히 유용한 사용 사례가 있습니까?

javadoc은 다음과 같이 말합니다.

"지정된 개체만 포함하는 불변의 목록을 반환합니다.반환된 목록은 일련화할 수 있습니다."

질문:

내가 왜 다른 방법을 원하겠어?

주로 편의상 다음 항목에 대한 일련의 문장을 작성할 필요가 없습니다.

  • 빈 목록 개체를 만듭니다.
  • 요소를 추가합니다.
  • 그것을 불변의 포장지로 싸다.

또, 고속이나 메모리의 절약도 가능하지만, 이러한 작은 절약량은 그다지 크지 않습니다.(싱글톤 리스트를 대량으로 작성하는 애플리케이션은, 지극히 드문 일입니다.)

여기서 불변은 어떤 역할을 할까요?

이것은 방법 사양의 일부입니다.상기를 참조해 주세요.

이 방법은 단순히 편리한 방법뿐만 아니라 특별히 유용한 사용 사례가 있습니까?

확실히, 사용하기 편리한 유스케이스가 있습니다.singletonList방법.하지만 일반적인 사용 사례와 "특별히 유용한" 사례를 (객관적으로) 어떻게 구분할지 모르겠습니다.

싱글톤 메서드에 대한 한 가지 뷰를 다음에 나타냅니다.

이러한 다양한 "싱글톤" 메서드는 단일 값을 해당 값의 컬렉션을 필요로 하는 API에 전달할 때 유용합니다.물론 이 방법은 전달된 값을 처리하는 코드가 컬렉션에 추가될 필요가 없는 경우에 가장 적합합니다.

javadoc에서

@param  the sole object to be stored in the returned list.
@return an immutable list containing only the specified object.

import java.util.*;

public class HelloWorld {
    public static void main(String args[]) {
        // create an array of string objs
        String initList[] = { "One", "Two", "Four", "One",};

        // create one list
        List list = new ArrayList(Arrays.asList(initList));

        System.out.println("List value before: "+list);

        // create singleton list
        list = Collections.singletonList("OnlyOneElement");
        list.add("five"); //throws UnsupportedOperationException
        System.out.println("List value after: "+list);
    }
}

코드가 읽기 전용 목록을 예상하지만 이 목록에서 하나의 요소만 전달하려는 경우 사용합니다. singletonList안전하고 빠릅니다.

불변의 질문에 답하려면:

Collections.singletonList 에 의해 불변 목록이 생성됩니다.불변 목록(수정 불가능한 목록이라고도 함)은 내용을 변경할 수 없습니다.항목을 추가하거나 제거하는 메서드는 내용을 변경하려고 하면 예외를 발생시킵니다.

싱글톤 목록에는 해당 항목만 포함되며 변경할 수 없습니다.

Unmutable/Singleton 컬렉션이 오브젝트가 1개밖에 없는 컬렉션을 참조하는 경우 오브젝트가 1개뿐인 컬렉션을 "Unmodify Collection"으로 함으로써 동일한 기능을 실현할 수 있습니다.Unmodifyable Collection은 하나의 오브젝트로 동일한 기능을 구현할 수 있으므로 Singleton Collection은 어떤 특별한 목적을 위해 제공됩니까?

singleton List는 모든 객체의 인스턴스를 유지할 수 있습니다.오브젝트 상태는 변경할 수 있습니다.

List<Character> list = new ArrayList<Character>();
list.add('X');
list.add('Y');
System.out.println("Initial list: "+ list);
List<List<Character>> list2 = Collections.singletonList(list);
list.add('Z');
System.out.println(list);
System.out.println(list2);

위와 같이 unmodifyable List를 정의할 수 없습니다.

언급URL : https://stackoverflow.com/questions/4801794/use-of-javas-collections-singletonlist

반응형