Java 목록을 초기화 한 줄
개요
이 빠른 튜토리얼에서,우리는”ll 하는 방법을 조사하기 위해 초기화를 사용하여 목록을 한.
추가 읽기:
컬렉션.emptyList()대 새 목록 인스턴스
가 Java ArrayList
만들기에서 배열
우리는 우리 목록을 만들 수 있습에서 훌륭한 기능들을 가지고 있습니다. 감사 배열,우리는 초기화할 수 있습니다 그들 중 하나에서 선
우리는 신뢰할 수 있습 varargs 처리하기 위한 메커니즘을 배열 창조이다. 이를 통해보다 간결하고 읽기 쉬운 코드를 작성할 수 있습니다.
이 코드의 결과 인스턴스는 List 인터페이스를 구현하지만”t 는 java 입니다.우틸.,ArrayList 또는 LinkedList. 대신,그것이”의 목록에 의해 백업됩니 원래의 배열은 두 가지 의미를 우리는”ll 에서 보면 이 섹션입니다.
클래스”s 이름이 arraylist 일지라도 java 에서”s 입니다.우틸.배열 패키지.
2.1. 고정 크기
배열의 결과 인스턴스.asList 는 고정 된 크기를 갖습니다:
2.2. 공유 참조
원본 배열하고 목록을 공유하는 동일한 개체에 대한 참조를
을 만들에서는 스트림(Java8)
우리는 우리가 할 수 있습 스트림으로 어떤 종류의 컬렉션입니다.,
따라서,공장을 위한 방법 스트림,우리가 만들 수 있고 초기화 목록에서 하나인:
는 우리가 참고해야기는 수집기입니다.toList()는 반환 된 목록의 정확한 구현을 보장하지 않습니다.
반환 된 인스턴스의 변경 가능성,직렬화 가능성 또는 스레드 안전성에 대한 일반적인 계약이 없습니다. 따라서 우리의 코드는 이러한 속성 중 하나에 의존해야합니다.
일부 소스는 해당 스트림을 강조 표시합니다.의(…).collect(…)는 배열보다 더 큰 메모리 및 성능 풋 프린트를 가질 수 있습니다.asList()., 그러나 거의 모든 경우에,그것은”약간의 차이가 같은 마이크로 최적화입니다.
공장 메서드(Java9)
JDK9 을 소개한 여러 가지 공장 편리한 방법은 컬렉션에 대해
한 가지 중요한 세부사항은 반환되는 경우는 변경할 수 없습니다. 그 외에도 공장 방법은 공간 효율성과 스레드 안전성에 몇 가지 장점이 있습니다.
이 주제는이 기사에서 더 자세히 살펴 봅니다.,
더블-버팀대 초기화
여러 장소에서,우리는 우리를 찾을 수 있습 방법이라는 두 번 버팀대 초기화는 다음과 같습니다:
“이름을 더블-버팀대 초기화”아주 잘못된 것입니다. 구문이 콤팩트하고 우아하게 보일 수도 있지만 후드 아래에서 일어나는 일을 위험하게 숨 깁니다.
실제로 Java 의 이중 중괄호 구문 요소가 있습니다.이 요소는 의도적으로 이런 식으로 포맷 된 두 개의 블록입니다.
외부 중괄호를 사용하면 arraylist 의 하위 클래스가 될 익명의 내부 클래스를 선언합니다., 이 중괄호 안에 하위 클래스의 세부 사항을 선언 할 수 있습니다.
평소와 같이 인스턴스 이니셜 라이저 블록을 사용할 수 있으며 내부 중괄호 쌍이 나오는 곳입니다.이 구문의 간결함은 유혹적입니다. 그러나 안티 패턴으로 간주됩니다.
이중 중괄호 초기화에 대한 자세한 내용을 보려면 여기 기사를 살펴보십시오.
결론
Modern Java 는 한 줄에 컬렉션을 만들 수있는 몇 가지 옵션을 제공합니다. 우리가 선택하는 방법은 기술적 인 추론보다는 개인적인 취향에 거의 전적으로 달려 있습니다.,
중요한 테이크 아웃이 있지만,그것은 우아한 외모,anti-의 패턴에 익명의 내부 클래스에서 초기화(일 두 번 버팀대)의 많은 부정적인 부작용이 있습니다.
항상 그렇듯이 코드는 GitHub 에서 사용할 수 있습니다.
시작을 봄 5 봄 2 부팅을 통해 배울 봄 course:
>>교육 과정을 살펴보세요