Java에서 목록 연결

Rashmi Patidar 2023년10월12일
  1. Java 8에서cacat()메소드를 사용한 목록 연결
  2. Java 8에서Stream.of()메소드를 사용한 목록 연결
Java에서 목록 연결

동적으로 증가 할 수있는 정렬 된 요소 컬렉션을List컬렉션이라고합니다. 이것은node요소로 표시되고 각 노드에는 다음 노드 및 요소에 대한reference가 포함됩니다. 목록 컬렉션에서 수행 할 수있는 작업에는 인덱스를 사용한 요소 탐색, 삽입, 업데이트 및 삭제가 포함됩니다.

Java는 기능을위한 다양한 메소드를 제공하는List인터페이스를 제공합니다. 목록의 여러 구현에는ArrayList,LinkedListSortedList가 포함됩니다. 목록에는 다음과 같은 다양한 속성이 있습니다.

  • 목록에서 중복 값이됩니다.
  • 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 Patidar avatar Rashmi Patidar avatar

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

관련 문장 - Java List