Lists.newArrayList 대 새 ArrayList
List
Strings 를 만들기위한 가장 좋은 구성은 무엇입니까 ? 그것은이다 Lists.newArrayList()
(구아바에서) 또는 new ArrayList()
?
그것은 단지 개인적인 취향입니까?
아니면 유형 제네릭 유형 추론입니까?
또는 Lists.newArrayList () 사용에 대한 이론적 또는 실제적 가치가 있습니까?
구아바 빌더는 유형 인수를 여러 번 입력하는 것을 저장합니다. 비교:
List<Foo<Bar, Baz>> list = Lists.newArrayList();
List<Foo<Bar, Baz>> list = new ArrayList<Foo<Bar, Baz>>();
Java 7에서는 다이아몬드 연산자가 있기 때문에 약간 구식입니다.
List<Foo<Bar, Baz>> list = new ArrayList<>();
에서 구아바의 소스 :
public static <E> ArrayList<E> newArrayList() {
return new ArrayList<E>();
}
수행하는 모든 작업은 유형 추론을 허용하는 것입니다. 런타임에는 차이가 없습니다.
한 점을 추가 하면 Lists.newArrayList ()의 오버로드 버전이 더 유용합니다.
Lists.newArrayList(E... elements)
Lists.newArrayList(Iterable<? extends E> elements)
Lists.newArrayList(Iterator<? extends E> elements)
보다 유용한 기능을 제공합니다 new ArrayList()
.
예 : new ArrayList()
할 수 없음 :
Lists.newArrayList("a","b");
Lists.newArrayList(anIterable);
이것이 Lists.newArrayList가하는 일입니다 :
@GwtCompatible(serializable = true)
public static <E> ArrayList<E> newArrayList() {
return new ArrayList<E>();
}
따라서이 두 가지는 기본적으로 동일하며 newArrayList를 사용하면 제네릭 유형을 복제 할 필요가 없다는 이점이 있습니다. 이것은 복잡한 제네릭에 매우 유용합니다.
List<Map<X,List<Y>> list = new ArrayList<Map<X,List<Y>>();
List<Map<X,List<Y>> list = Lists.newArrayList();
여기 에 설명 된대로 Lists
, Sets
등 을 사용하는 주된 동기는 코드의 가독성 / 중복 및 유형 추론을 개선하는 것입니다.
오버로드 된 생성자를위한 Java 8 접근 방식.
Guava에서 오버로드 된 생성자를 사용하려면 Java 8 Stream Builder를 사용하는 다른 방법을 권장합니다.
List<String> listTest = Stream.<String>builder.add("Hello").add("My Name").add("Blah").build().collect(Collectors.toList());
앞서 언급했듯이 Java 7은 이것을 쓸모 없게 만들지 만, 나중에 목록, 집합,지도 등의 유형을 더 쉽게 변경할 수 있기 때문에 팩토리 메서드를 사용합니다.
참고 URL : https://stackoverflow.com/questions/9980915/lists-newarraylist-vs-new-arraylist
'Development Tip' 카테고리의 다른 글
교차 도메인 iframe의 DOM 콘텐츠 가져 오기 (0) | 2020.11.08 |
---|---|
clang ++ -stdlib = libc ++와 함께 libstdc ++ 컴파일 된 라이브러리 사용 (0) | 2020.11.08 |
자동 레이아웃 (제약 조건) 상위보기에서 나란히보기 2 개 중앙 (0) | 2020.11.07 |
정밀도와 소수 자릿수가 지정된 문자열로 float를 변환 하시겠습니까? (0) | 2020.11.07 |
일반 확장 클래스 및 Kotlin에서 인터페이스 구현 (0) | 2020.11.07 |