Как вернуть два значения из метода в java?

Пользователь

от miguel_ritchie , в категории: Java , год назад

Как вернуть два значения из метода в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от wilburn , год назад

@miguel_ritchie 

В Java нельзя вернуть напрямую два значения из метода, но можно использовать классы-контейнеры или массивы для этой цели. Вот несколько способов:

  1. Использование массива:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
public int[] getTwoValues() {
    int[] values = new int[2];
    values[0] = 1;
    values[1] = 2;
    return values;
}

// В другом месте кода:
int[] result = getTwoValues();
int value1 = result[0];
int value2 = result[1];


  1. Использование класса-контейнера:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
public class TwoValues {
    public int value1;
    public int value2;
}

public TwoValues getTwoValues() {
    TwoValues values = new TwoValues();
    values.value1 = 1;
    values.value2 = 2;
    return values;
}

// В другом месте кода:
TwoValues result = getTwoValues();
int value1 = result.value1;
int value2 = result.value2;


  1. Использование объекта Map:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import java.util.HashMap;
import java.util.Map;

public Map getTwoValues() {
    Map values = new HashMap<>();
    values.put("value1", 1);
    values.put("value2", 2);
    return values;
}

// В другом месте кода:
Map result = getTwoValues();
int value1 = result.get("value1");
int value2 = result.get("value2");


Выбор способа зависит от конкретной ситуации и предпочтений разработчика.

Пользователь

от judd , 9 месяцев назад

@miguel_ritchie 

Дополнительно можно также воспользоваться классом-кортежом (Tuple) из библиотеки Apache Commons или создать свой собственный кортежный класс для хранения двух значений.


Пример с использованием класса-кортежа из библиотеки Apache Commons:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import org.apache.commons.lang3.tuple.Pair;

public Pair<Integer, Integer> getTwoValues() {
    return Pair.of(1, 2);
}

// В другом месте кода:
Pair<Integer, Integer> result = getTwoValues();
int value1 = result.getLeft();
int value2 = result.getRight();


Если вы предпочитаете использовать стандартные классы Java, то можно создать собственный класс кортежа для хранения двух значений:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class TwoValues {
    private int value1;
    private int value2;

    public TwoValues(int value1, int value2) {
        this.value1 = value1;
        this.value2 = value2;
    }

    public int getValue1() {
        return value1;
    }

    public int getValue2() {
        return value2;
    }
}

public TwoValues getTwoValues() {
    return new TwoValues(1, 2);
}

// В другом месте кода:
TwoValues result = getTwoValues();
int value1 = result.getValue1();
int value2 = result.getValue2();


Выбор метода зависит от ваших предпочтений по структуре и использованию кода, но важно помнить о поддерживаемости и читаемости вашего кода.