programing

단일 요소 배열 목록을 빠르고 편리하게 작성하는 방법

firstcheck 2022. 7. 2. 22:01
반응형

단일 요소 배열 목록을 빠르고 편리하게 작성하는 방법

이것을 1줄로 할 수 있는 유틸리티 방법이 있습니까?어디에서도 찾을 수 없다Collections, 또는List.

public List<String> stringToOneElementList(String s) {
    List<String> list = new ArrayList<String>();
    list.add(s);
    return list;
}

화려한 테를 달 생각이 아니라면 바퀴를 다시 발명하고 싶지 않아요.

음... 타입은T가 아닌String하지만 요점은 아시겠죠(모든 특수한 검사, 안전 검사 등)

고정 사이즈List

제가 아는 가장 쉬운 방법은 고정 크기의 단일 요소를 만드는 것입니다.List비슷한 방법으로

// Returns a List backed by a varargs T.
return Arrays.asList(s);

가변 크기List

크기가 다른 경우 및 고정 크기를 구성할 수 있습니다.List맘에 들다

return new ArrayList<String>(Arrays.asList(s));

(Java 7+에서는) 다이아몬드 연산자를 사용해서

return new ArrayList<>(Arrays.asList(s));

단일 요소 목록

컬렉션은 단일 요소를 사용하여 목록을 반환할 수 있으며 목록은 변경되지 않습니다.

Collections.singletonList(s)

여기서의 이점은 IDE 코드 분석이 단일 요소 asList(..) 호출에 대해 경고하지 않는다는 것입니다.

Collections.singletonList(object)

이 방법으로 작성된 목록은 불변입니다.

유틸리티 방법을 사용할 수 있습니다.Arrays.asList그리고 그 결과를 새로운 것으로 만들고ArrayList.

List<String> list = new ArrayList<String>(Arrays.asList(s));

기타 옵션:

List<String> list = new ArrayList<String>(Collections.nCopies(1, s));

그리고.

List<String> list = new ArrayList<String>(Collections.singletonList(s));

Java 7+에서는 "다이아몬드 연산자"를 사용하여new ArrayList<String>(...)와 함께new ArrayList<>(...).

자바 9

만약 여러분이 자바 9+를 사용하고 있는 경우:List.of 메서드를 사용할 수 있다.

List<String> list = new ArrayList<>(List.of(s));

위의 각 옵션의 사용에 관계없이 다음 옵션을 사용하지 않을 수 있습니다.new ArrayList<>()목록을 변경할 필요가 없는 경우 wrapper를 클릭합니다.

자바 8강과 함께:

Stream.of(object).collect(Collectors.toList())

아니면:집합이 필요하다.

Stream.of(object).collect(Collectors.toSet())

다른 답변은 모두 사용됩니다.Arrays.asList()변경할 수 없는 리스트가 반환됩니다.UnsupportedOperationException요소를 추가 또는 삭제하려고 하면 느려집니다).변경 가능한 목록을 가져오려면 반환된 목록을 새 목록으로 줄 바꿈하면 됩니다.ArrayList 으로서 답변을 몇 있었지만, 더 깨끗한 해결책 Guava'sLists.newArrayList()(적어도 궈바 10일부터 사용 가능한 2011년에 발표되)을 사용하는 것입니다 지적한다.

예를 들어 다음과 같습니다.

Lists.newArrayList("Blargle!");

매우 간단하:

Arrays.asList("Hi!")

궈바로 언급을 가져온 것을 보고, 나도 이클립스 모음(이전에 GSCollections으로 알려져)을 제안할 것이라고 생각했다.

다음 예시는 모두 a를 반환합니다.List하나의 아이템으로.

Lists.mutable.of("Just one item");
Lists.mutable.with("Or use with");
Lists.immutable.of("Maybe it must be immutable?");
Lists.immutable.with("And use with if you want");

다른 컬렉션에도 유사한 방법이 있습니다.

그러나 또 다른 대안은 이중괄호 초기화이다.

new ArrayList<String>() {{ add(s); }};

비효율적이고 모호합니다.따라서 적합할 뿐입니다.

  • 대부분의 장치 테스트 및 기타 단수명 프로그램 등 메모리 누수에 개의치 않는 코드
  • 다른 솔루션이 해당되지 않는 경우, 이는 질문의 ArrayList와는 다른 유형의 컨테이너를 채우려고 여기까지 스크롤했다는 것을 의미합니다.

언급URL : https://stackoverflow.com/questions/20358883/how-to-quickly-and-conveniently-create-a-one-element-arraylist

반응형