Java 함수에서 두 값 반환

Rashmi Patidar 2023년10월12일
  1. Java에서 ArrayList 클래스를 사용하여 여러 값 반환
  2. Java에서 Pair 클래스를 사용하여 두 값 반환
Java 함수에서 두 값 반환

Java에서는 함수에 두 값을 반환할 수 있는 권한이 없습니다. 다중 값 반환과 함께 제공되는 문제에 대한 해결은 출력을 저장하기 위해 사용자 정의 클래스를 생성하거나 Array, Pair와 같은 내장 데이터 유형을 사용하여 해결할 수 있습니다(반환할 값이 두 개뿐인 경우 ), HashMap문자열 배열.

Java에서 ArrayList 클래스를 사용하여 여러 값 반환

다음은 두 개 이상의 값을 반환하는 Java 함수를 보여 주는 작은 코드 블록입니다.

import java.util.ArrayList;
import java.util.Arrays;

public class Main {
  public static void main(String[] args) {
    ArrayList<String> list = callFunction();
    list.forEach(System.out::println);
  }

  private static ArrayList<String> callFunction() {
    return new ArrayList<>(Arrays.asList("Hi", "Hello"));
  }
}

위의 코드에서는 Java의 반환 기능을 이해하기 위한 메서드가 정의되어 있습니다. callFunction 메소드는 main 함수 또는 드라이버 클래스에서 호출됩니다. JavaReturnTwoValues 클래스 전용입니다.

함수 정의에서 ArrayList 객체는 처음에 두 개의 값으로 인스턴스화됩니다. 값은 공용 클래스 생성자에서 허용됩니다. Arrays.asList() 함수를 사용하면 인라인 인스턴스화가 가능하므로 선언 시 값을 정의할 수 있습니다.

정적 asList 메서드는 매개변수로 지정된 정의된 목록을 반환합니다. return 키워드는 항상 뒤에 오는 단일 매개변수를 허용합니다. 둘 이상의 매개변수가 지정되면 컴파일 시간 오류 문제가 발생합니다.

함수의 값은 list 지역 변수에 보존됩니다. 지역 변수에 대해 forEach() 메서드가 호출됩니다. 이 지정된 메소드는 단일 accept 프로세스가 있는 기능적 인터페이스인 Consumer 인스턴스를 사용합니다. 값이나 클래스만 소비하고 아무 것도 반환하지 않음을 의미합니다.

따라서 명령문은 목록 인스턴스에서 요소를 순차적으로 내보내고 forEach 메서드는 요소를 사용하여 콘솔에 값을 인쇄합니다. ::는 메서드 참조 연산자이며 람다 식 a-> System.out.println(a)과 유사합니다.

위 코드 블록의 출력은 아래와 같습니다.

Hi Hello World

Java에서 Pair 클래스를 사용하여 두 값 반환

다음은 기능을 이해하기 위해 사용자 정의 Pair 클래스를 사용하는 코드 블록입니다.

public class Main {
  public static void main(String[] args) {
    Pair<String, String> pair = callPairFunction();
    System.out.println(pair.getKey() + " " + pair.getValue());
  }

  private static Pair<String, String> callPairFunction() {
    return new Pair<String, String>("Key", "I am value");
  }
}

class Pair<T1, T2> {
  private final T1 key;
  private final T2 value;

  public Pair(T1 first, T2 second) {
    this.key = first;
    this.value = second;
  }

  public T1 getKey() {
    return key;
  }

  public T2 getValue() {
    return value;
  }
}

위의 프로그램에는 두 개의 클래스가 정의되어 있습니다. 하나는 main 또는 드라이버 기능을 보유하는 공개 클래스이고 다른 하나는 쌍의 기능을 내부적으로 설명하기 위한 사용자 정의 Pair 클래스입니다.

드라이버 클래스에는 함수 및 값 조작 프로세스를 호출하기 위한 코드가 있습니다. callPairFunctionPair 사용자 정의 데이터 유형을 반환하는 개인 메서드입니다. 클래스는 키와 해당 값인 값 쌍을 저장하도록 선언됩니다.

기본 클래스 아래에는 사용자 정의 클래스인 Pair<T1, T2>가 있습니다. 일반적으로 Java에서 Generics 개념으로 정의되고 작동합니다. T1T2 매개변수는 일반 데이터 유형입니다. 즉, 전달되는 데이터 유형의 형식을 취할 수 있습니다. 우리의 경우 문자열이 전달되므로 T1T2String 유형이 됩니다.

클래스에는 전달된 값으로 지역 변수를 인스턴스화하는 공용 생성자가 있습니다. 공개 getKeygetValue 메소드를 사용하면 생성자에서 인스턴스화한 후 키와 값이 반환됩니다.

callPairFunction 메소드에서 Pair 클래스의 인스턴스는 새 키워드를 사용하여 반환됩니다. 이 명령문은 클래스의 공용 생성자를 호출하고 키 및 값 변수를 설정합니다. 반환된 인스턴스는 Pair 클래스의 왼쪽과 오른쪽에 있는 값을 검색하는 데 사용됩니다.

아래는 위의 코드에 정의된 출력입니다.

Key I am value

특히 org.apache.commons.lang3.tuple 패키지도 유사한 내장 클래스를 제공합니다. Pair는 값에 대해 작업하기 위한 기존 기능 및 작업을 보유하는 패키지에 있는 클래스입니다.

미리 정의된 클래스를 사용하여 번거로운 코드 작성을 피하고 새로운 Pair 클래스를 생성하는 오버헤드를 피할 수 있습니다. 프로젝트에 주입할 종속성이 여기에 표시됩니다.

<dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-configuration2</artifactId>
            <version>2.7</version>
</dependency>
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 Function

관련 문장 - Java Array