단일 요소 배열 목록을 빠르고 편리하게 작성하는 방법
이것을 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));
ArrayList(Collection)
컨스트럭터Arrays.asList
메서드를 사용합니다.Collections.nCopies
메서드를 사용합니다.Collections.singletonList
메서드를 사용합니다.
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
'programing' 카테고리의 다른 글
"Circular Linked List"(단일 또는 이중) 데이터 구조가 필요한 이유는 무엇입니까? (0) | 2022.07.02 |
---|---|
Java 클래스 파일을 "컴파일 해제"하려면 어떻게 해야 합니까? (0) | 2022.07.02 |
C와 C++의 조건부 연산자 차이 (0) | 2022.07.02 |
vue j에 대한 응답형 이미지 그리드 갤러리 (0) | 2022.07.02 |
Vue.js 2.3 - Element UI 대화상자 - 동기 및 소품 (0) | 2022.07.02 |