Java程式設計小技巧(1)——方法傳回兩個物件

one發表於2022-05-09

原文地址:Java程式設計小技巧(1)——方法傳回兩個物件 | Stars-One的雜貨小窩

題目是個偽命題,由Java語法我們都知道,方法要麼返回一個物件,要麼就不返回

當有這樣的情況,我們需要返回兩個或多個物件,該怎麼做呢?

1.多物件封裝成單個類中的多個欄位

這種方法詳細各位都能理解,無非就是新建一個類,然後類裡面再有幾個欄位即可

class MyResult {
    Student student;
    People people;

    //省略get/set方法和構造方法
}

public MyResult test(){
    Student student = new Student();
    People people = new People();
    
    return new MyResult(student,people);
}

但如果我們情況比較多的話,每次新建類都很麻煩,有沒有更方便的一種使用呢?

當然是有的,我們可以使用Pair類

2.使用Pair類和MutableTriple

PairMutableTriple都是lang3包中提供的,所以要使用,得先加入依賴

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.8</version>
</dependency>

還是上面的例子,我們可以使用Pair改造一下

public Pair<Student,People> test(){
    Student student = new Student();
    People people = new People();
    Pair<Student,People> pair = Pair.of(student, people);
    
    return pair;
}

//獲取數值
Student s = pair.getLeft();
People p = pair.getRight();

可以看到,我們無需宣告一個新的類即可實現我們需要返回兩個物件的需求

如果是三個物件,則是同理,只不過是使用到了MutableTriple,泛型接收三個

MutableTriple<String, Integer, String> pairs = MutableTriple.of("", 1, "");

//獲取數值
String s = pairs.getLeft();
Integer i = pairs.getMiddle();
String s1  = pairs.getRight();

什麼,你問我有沒有四個物件的Pair類,那肯定是沒有的?

因為超過三個,官方都推薦新建個類來實現了!!

補充-Kotlin中的Pair和Triple類

最後,在Kotlin中,預設已經上述這兩個類的實現

//Pair使用
val data = Pair("",1)
val fstValue = data.first
val secValue = data.second

//Triple使用
val data = Triple("",1,2)
val fstValue = data.first
val secValue = data.second
val thirdValue = data.third

相關文章