how to return multi value in java

Posted in :

python 的型別自動轉換及可以傳入動態參數,可以動態傳回多個變數, 相較於 java 的世界是滿方便的. 如何在 java 裡傳回2個以上的變數內容?

Arrays

double[] getCoordinatesDoubleArray() {
    double[] coordinates = new double[2];

    coordinates[0] = 10;
    coordinates[1] = 12.5;
    return coordinates;
}

問題是, 這個要相同型別.

List

List<Number> getCoordinatesList() {
    List<Number> coordinates = new ArrayList<>();
    coordinates.add(10);  // Integer
    coordinates.add(12.5);  // Double
    return coordinates;
}

好處是, 可以有微微型別不同, 如果用 Number…

sample 2:

    public static List<Object> getDetails()
    {
        String name = "Geek";
        int age = 35;
        char gender = 'M';
  
        return Arrays.asList(name, age, gender);
    }
  
    // Driver code
    public static void main(String[] args)
    {
        List<Object> person = getDetails();
        System.out.println(person);
    }

Map

Map<String, Number> getCoordinatesMap() {
    Map<String, Number> coordinates = new HashMap<>();
    coordinates.put("longitude", 10);
    coordinates.put("latitude", 12.5);
    return coordinates;
}

用 Map 和用 JsonObject 來傳差不多.

還有一些其他解法, 但對我來說, 都太難理解, 例如:Tuples, 一點也不會想去使用那些方法.


Pair

Using Pair (If there are only two returned values)

import javafx.util.Pair;
  
    public static Pair<Integer, String> getTwo()
    {
        return new Pair<Integer, String>(10, "GeeksforGeeks");
    }
  
    // Return multiple values from a method in Java 8
    public static void main(String[] args)
    {
        Pair<Integer, String> p = getTwo();
        System.out.println(p.left + " " + p.right);
    }

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *