JavaTuples - 型別轉換



元組到列表/陣列

元組可以轉換為列表/陣列,但會以犧牲型別安全為代價,轉換後的列表型別為 List<Object>/Object[]。

List<Object> list = triplet.toList();
Object[] array = triplet.toArray();

集合/陣列到元組

可以使用 fromCollection() 方法將集合轉換為元組,可以使用 fromArray() 方法將陣列轉換為元組。

Pair<String, Integer> pair = Pair.fromCollection(list);
Quartet<String,String,String,String> quartet = Quartet.fromArray(array); 

如果陣列/集合的大小與元組的大小不同,則會發生 IllegalArgumentException 異常。

Exception in thread "main" java.lang.IllegalArgumentException: 
Array must have exactly 4 elements in order to create a Quartet. Size is 5
   at ...	

示例

讓我們看看 JavaTuples 的實際應用。這裡我們將展示如何將元組轉換為列表/陣列,反之亦然。

在 **C:\>JavaTuples** 中建立一個名為 TupleTester 的 Java 類檔案。

檔案:TupleTester.java

package com.tutorialspoint;
import java.util.List;
import org.javatuples.Quartet;
import org.javatuples.Triplet;
public class TupleTester {
   public static void main(String args[]){
      Triplet<String, Integer, String> triplet = Triplet.with(
         "Test1", Integer.valueOf(5), "Test2"
      );
      List<Object> list = triplet.toList();
      Object[] array = triplet.toArray();
      System.out.println("Triplet:" + triplet);
      System.out.println("List: " + list);  
      System.out.println();
      for(Object object: array) {
         System.out.print(object + " " );
      }
      System.out.println();
      String[] strArray = new String[] {"a", "b" , "c" , "d"};
      Quartet<String, String, String, String> quartet = Quartet.fromArray(strArray);
      System.out.println("Quartet:" + quartet);      
   }
}

驗證結果

使用 **javac** 編譯器編譯類,如下所示:

C:\JavaTuples>javac -cp javatuples-1.2.jar ./com/tutorialspoint/TupleTester.java

現在執行 TupleTester 檢視結果:

C:\JavaTuples>java  -cp .;javatuples-1.2.jar com.tutorialspoint.TupleTester

輸出

驗證輸出

Triplet:[Test1, 5, Test2]
List: [Test1, 5, Test2]

Test1 5 Test2 
Quartet:[a, b, c, d]
廣告