原文地址: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
類
Pair
和MutableTriple
都是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