Java에서 목록 연결
동적으로 증가 할 수있는 정렬 된 요소 컬렉션을List
컬렉션이라고합니다. 이것은node
요소로 표시되고 각 노드에는 다음 노드 및 요소에 대한reference
가 포함됩니다. 목록 컬렉션에서 수행 할 수있는 작업에는 인덱스를 사용한 요소 탐색, 삽입, 업데이트 및 삭제가 포함됩니다.
Java는 기능을위한 다양한 메소드를 제공하는List
인터페이스를 제공합니다. 목록의 여러 구현에는ArrayList
,LinkedList
및SortedList
가 포함됩니다. 목록에는 다음과 같은 다양한 속성이 있습니다.
- 목록에서 중복 값이됩니다.
- null 요소를 저장합니다.
- 크기가 명확한 배열과 달리 동적으로 성장합니다.
아래 코드는 Java 연결 목록을 만드는 방법을 보여줍니다.
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ListConcatenation {
public static void main(String[] args) {
List<String> birds_list =
Stream.of("pigeon", "crow", "squirrel").collect(Collectors.toList()); // Java 8
List<String> animal_list = List.of("cat", "dog", "rabbit"); // Java 9
System.out.println("Way 1");
List<String> stringArrayList = new ArrayList<String>(); // Java7
stringArrayList.addAll(birds_list);
stringArrayList.addAll(animal_list);
System.out.println(stringArrayList);
System.out.println("Way 2");
List<String> newList =
Stream.concat(birds_list.stream(), animal_list.stream()).collect(Collectors.toList());
System.out.println(newList);
System.out.println("Way 3");
List<String> newList2 =
Stream.of(birds_list, animal_list).flatMap(Collection::stream).collect(Collectors.toList());
System.out.println(newList2);
}
}
위의 코드 블록에서 처음 두 줄은 연결하려는 목록을 초기화합니다.
목록 초기화의 첫 번째 방법은 선언 자체에 요소를 제공하는 것입니다. 따라서Java 8
방법론에 따라Stream
인터페이스가 사용됩니다. 스트림은 데이터 소스에 대한 래퍼 역할을하며 데이터를 작동하고 처리하는 방법을 제공합니다. of
정적 메소드는 제공된 요소의 순차 스트림을 매개 변수로 가져와 작성하고 요소 스트림을 리턴합니다. 우리가 수행하는 작업 체인은 Java 8에 있습니다.collect
메소드는 축소 후 제공된stream
을 수집하는 터미널 작업입니다.
목록을 초기화하는 또 다른 방법은Java 9
버전을 사용하는 것입니다. 불변 목록을 생성하는List.of
정적 팩토리 메소드를 사용하여 목록을 초기화하는 편리한 방법을 제공합니다.
마지막으로 결합 된List
객체는 전통적으로Java 7
버전을 사용하여 초기화됩니다. addAll()
메소드는newList
인스턴스를 사용하여 호출됩니다. 메서드는 지정된 컬렉션을 식별 된 컬렉션의 끝에 추가합니다. 목록 추가에 성공하면true
를 반환합니다. 전달 된 목록 콜렉션이 널인 경우 메소드는NullPointerException
을 발생시킬 수 있습니다.
결합 된 목록 인스턴스는 이제birds_list
컬렉션을 포함합니다. 마찬가지로animal_list
인스턴스가stringArrayList
에 추가됩니다. 마지막으로 목록을 인쇄 한 후 차례로 추가되는 순차적 모음을 만듭니다.
다음은 코드 블록의 콘솔 출력입니다.
Way 1 [pigeon, crow, squirrel, cat, dog, rabbit] Way 2 [pigeon, crow, squirrel, cat, dog, rabbit]
Way 3 [pigeon, crow, squirrel, cat, dog, rabbit]
Java 8에서cacat()
메소드를 사용한 목록 연결
그림은 동일한 코드 블록을 사용하여concat()
메소드를 표시합니다. 이는Stream
인터페이스에서 정적입니다. 터미널 작업이 함수에 적용될 때 작동하므로중간
작업 또는 지연 초기화로 간주됩니다. concat()
메소드는 연결할 두 개의 스트림을 사용합니다. 그리고 매개 변수로 전달하는 두 개의 스트림에서 결합 된 목록을 반환합니다. 이 메서드를 통해collect
함수가 호출되어 스트림을 원하는 형식으로 변환합니다. 함수는 콜렉터를 인수로 취하고, 우리의 경우List
유형의 스트림을 줄이기 위해Collectors.toList()
함수가 전달됩니다.
출력은 첫 번째 코드 블록과 유사하며Way 2
문 아래의 위 콘솔 로그에 인쇄됩니다.
Java 8에서Stream.of()
메소드를 사용한 목록 연결
위에서 언급했듯이of
는 요소를 사용하는Stream
인터페이스의 정적 메소드입니다. 따라서 이러한 요소는primitive
데이터 유형 또는collections
클래스가 될 수 있습니다. 새와 동물의 컬렉션은 논쟁으로 전달됩니다. 이제flatMap
메소드가 호출 체인에서 호출되며 처리를 수행하고 전달 된 스트림을 변환하는 데 사용됩니다.
flatMap
메소드는Function
을 매개 변수로 사용합니다. 이 메서드는 요소에 변형을 적용하고 결과를 평평하게 만듭니다. 이 경우Collection::stream
이 전달되어 처리 후 반환되는 단일 스트림의 요소를 변환합니다. 이제collect
메소드를 사용하여 스트림을 수집합니다.
출력은 제목이Way 3
인 위의 콘솔 블록과 동일합니다.
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn