<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Java 元組 – 使用 Java 中的元組 > 原文: [https://howtodoinjava.com/java/basics/java-tuples/](https://howtodoinjava.com/java/basics/java-tuples/) 在本 Java 教程中,我們將學習 **Java 元組** – 通用數據結構,以及如何在 Java 程序中使用元組。 默認情況下,元組在 Java 編程語言中不作為數據結構出現,因此我們將使用一個不錯的第三方庫`javatuples`。 ```java Table of Contents 1\. What is tuple 2\. Tuple in Java 3\. Introduction of Javatuples 4\. Common Operations on Javatuples 5\. Conclusion ``` ## 1\. 什么是元組? 元組可以看作是*有序的不同類型的對象*的集合。 這些對象不一定以任何方式相互關聯,但是它們總的來說將具有一定的意義。 例如,`["Sajal Chakraborty", "IT Professional", 32]`可以是一個元組,其中該元組中的每個值都沒有任何關系,但是整個值集在應用程序中可能具有某些意義。 例如,給定元組可以代表具有姓名,部門和年齡的員工數據。 讓我們來看更多 *java 元組示例*。 ```java ["Java", 1.8, "Windows"] ["Alex", 32, "New York", true] [3, "Alexa", "howtodoinjava.com", 37000] ``` ## 2\. Java 中的元組 Java 沒有任何這樣的內置數據結構來支持元組。 無論何時需要,我們顯然都可以創建一個類似于元組的類。 同樣,在 Java 中,可以使用列表或數組來編寫元組特性的一部分,但這些不允許我們通過設計保存不同類型的數據類型。 因此,可以說在 Java 中使用標準數據結構的異構元組是不可能的。 #### 2.1 元組與列表/數組的比較 通常將元組與列表進行比較,因為它看起來非常像一個列表。 但是它們在某些方面有所不同。 1. 元組是可以包含異構數據的對象。 列表旨在存儲單一類型的元素。 2. 在所有數據結構中,元組被認為是最快的,并且它們消耗的內存量最少。 3. 雖然數組和列表是可變的,這意味著您可以更改其數據值并修改其結構,但元組是不可變的。 4. 像數組一樣,元組的大小也是固定的。 這就是為什么元組旨在完全替換數組的原因,因為它們在所有參數上都更有效率。 5. 如果您有一個在生命周期內僅分配一次的數據集,并且其值不應再次更改,則需要一個元組。 ## 3\. `javatuples`庫 #### 3.1 `javatuples` maven 依賴 `javatuples`庫存在于 Maven 中央存儲庫中,我們可以添加此依賴項以使用該庫。 ```java <dependency> <groupId>org.javatuples</groupId> <artifactId>javatuples</artifactId> <version>1.2</version> </dependency> ``` #### 3.2 `javatuples` - 類 Java 元組支持最大為`10`的元組,并且對于每種大小,它都提供了如下的元組實現。 * `Unit`(一個元素) * `Pair`(兩個元素) * `Triplet`(三個元素) * `Quartet`(四個元素) * `Quintet`(五個元素) * `Sextet`(六個元素) * `Septet`(七個元素) * `Octet`(八個元素) * `Ennead`(九個元素) * `Decade`(十個元素) 除了上述類之外,它還提供了另外兩個類來方便表示對。 大部分與`Pair`相同,但語法更詳細。 1. `KeyValue` 2. `LabelValue` #### 3.3 `javatuples` – 特性 *不同類型的 Java 元組*是: 1. 輸入安全 2. 不可變 3. 可迭代的 4. 可序列化 5. 可比(實現`Comparable`) 6. 實現`equals()`和`hashCode()` 7. 實現`toString()` ## 4\. `javatuples`的常見操作 #### 4.1 創建元組 ###### 4.1.1 工廠方法 元組對象是通過每個元組類提供的**工廠方法`with()`** 構造的。 例如,我們可以使用創建`Pair`的元組。 ```java Pair<String, Integer> pair = Pair.with("Sajal", 12); ``` ###### 4.1.2 構造器 我們還可以使用`Pair`的**構造器**。 ```java Pair<String, Integer> person = new Pair<String, Integer>("Sajal", 12); ``` ###### 4.1.3 集合或可迭代對象 我們可以從`Collection`或`Iterable`創建元組,前提是該集合具有確切數量的對象。 在這種情況下,請記住,集合中的項目數應與我們要創建的元組的類型相匹配。 ```java //Collection of 4 elements will create Quartet List<String> listOf4Names = Arrays.asList("A1","A2","A3","A4"); Quartet<String, String, String, String> quartet = Quartet.fromCollection(listOf4Names); System.out.println(quartet); //Create pair with items starting from the specified index. List<String> listOf4Names = Arrays.asList("A1","A2","A3","A4"); Pair<String, String> pair1 = Pair.fromIterable(listOf4Names, 2); System.out.println(pair1); ``` 程序輸出。 ```java [A1, A2, A3, A4] [A3, A4] ``` 同樣,我們可以根據需要創建任何元組類的對象。 #### 4.2 檢索值 ###### 4.2.1 `getValueX()`方法 我們可以使用其索引的`getValueX()`方法從元組中獲取值,其中`'X'`表示元組內部的元素位置。 例如`getValue0()`,`getValue1()`等。 ```java Pair<String, Integer> pair = Pair.with("Sajal", 12); System.out.println("Name : " + pair.getValue0()); System.out.println("Exp : " + pair.getValue1()); ``` 程序輸出: ```java Name : Sajal Exp : 12 ``` 請注意,這些獲取方法是類型安全的。 這意味著編譯器已經基于用于初始化元組的元素值知道方法的返回類型。 ###### 4.2.2 `getValue(int index)`方法 元組還有另一種類型不安全的方法`getValue(int index)`。 因此,在分配變量時,需要將值轉換為期望的類型。 ```java Pair<String, Integer> pair = Pair.with("Sajal", 12); System.out.println("Name : " + pair.getValue(0)); System.out.println("Exp : " + pair.getValue(1)); ``` 程序輸出: ```java Name : Sajal Exp : 12 ``` 類`KeyValue`和`LabelValue`的方法分別為`getKey()`/`getValue()`和`getLabel()`/`getValue()`。 #### 4.3 設定值 創建元組后,我們可以設置值。 我們可以通過`setAtX()`方法執行此操作,其中`'X'`是我們要設置值的索引位置。 ```java Pair<String, Integer> pair = Pair.with("Sajal", 12); //Modify the value Pair<String, Integer> modifiedPair = pair.setAt0("Kajal"); System.out.println(pair); System.out.println(modifiedPair); ``` 程序輸出: ```java [Sajal, 12] [Kajal, 12] ``` > 請注意,元組是不可變的。 因此,`setAt()`方法返回具有修改后值的相同類型的元組。 原始元組不變。 #### 4.4 添加或刪除元素 ###### 4.4.1 `add()`方法 我們還可以在元組中添加元素,這將返回與元素數量匹配的新元組類型。 例如,如果我們將元素值添加到`Pair`,那么我們將獲得一個`Triplet`對象作為回報。 元組的末尾添加了新元素。 ```java Pair<String, Integer> pair = Pair.with("Sajal", 12); Triplet<String, Integer, String> triplet = pair.add("IT Professional"); System.out.println(pair); System.out.println(triplet); ``` 程序輸出: ```java [Sajal, 12] [Sajal, 12, IT Professional] ``` 我們也可以將一個元組對象添加到另一個元組中。 它將根據添加后存在的元素數返回元組的類型。 ```java Triplet<String, String, String> triplet = Triplet.with("Java", "C", "C++"); Quartet<String, String, String, String> quartet = triplet.addAt1("Python"); Septet septet = quartet.add(triplet); //3 + 4 = 7 System.out.println(triplet); System.out.println(quartet); System.out.println(septet); ``` 程序輸出: ```java [Java, C, C++] [Java, Python, C, C++] [Java, Python, C, C++, Java, C, C++] ``` ###### 4.4.2 `join()`方法 默認情況下,新元素添加到元組的末尾。 但是我們也可以使用`addAtX()`方法在元組的其他位置添加元素。 ```java Triplet<String, String, String> triplet = Triplet.with("Java", "C", "C++"); Quartet<String, String, String, String> quartet = triplet.addAt1("Python"); System.out.println(triplet); System.out.println(quartet); ``` 程序輸出: ```java [Java, C, C++] [Java, Python, C, C++] ``` #### 4.5 將元組轉換為集合或數組 每個元組類提供`asList()`和`toArray()`方法,它們分別返回`List`和`Array`。 ```java //Convert to list Quartet<String, Integer, String, Double> quartet1 = Quartet.with("A1",1,"A3",2.3); List<Object> quartletList = quartet1.toList(); System.out.println(quartletList); //Convert to array Object[] quartletArr = quartet1.toArray(); System.out.println(Arrays.toString(quartletArr)); ``` 程序輸出: ```java [A1, 1, A3, 2.3] [A1, 1, A3, 2.3] ``` > 請注意,元組可以包含異構類型,因此相應的結果類型將為`List<Object>`或`Object[]`。 #### 4.6 迭代 `javatuples`中的所有元組類都實現`Iterable`接口,因此可以與集合或數組相同的方式對其進行迭代。 ```java Quartet<String, Integer, String, Double> quartet1 = Quartet.with("A1",1,"A3",2.3); for(Object obj : quartet1) { System.out.println(obj); } ``` 程序輸出: ```java A1 1 A3 2.3 ``` #### 4.7 Java 元組中的更多操作 所有元組類都有以下實用方法,例如集合,我們可以根據需要使用它們。 * **`contains()`** – 如果該元組包含指定的元素,則返回`true`。 * **`containsAll()`** – 如果該元組包含所有指定的元素,則返回`true`。 * **`indexOf()`** – 返回指定元素首次出現的索引。 * **`lastIndexOf()`** – 返回指定元素最后一次出現的索引。 元組還提供`hashCode()`,`equals()`和`compareTo()`方法的通用實現,這些方法可以很好地處理包裝程序和字符串類。 ## 5\. Java 元組 - 總結 在此 **Java 元組教程**中,我們了解了如何通過`javatuple`庫在 Java 中使用元組。 因此,如果您對存儲*固定數量的異構元素*的數據結構有任何要求,則可以使用此庫。 它非常簡單,易于使用并提供良好的性能。 [下載源碼](https://howtodoinjava.com/wp-content/uploads/2018/10/javaTuples.zip) 學習愉快! 參考文獻: [`Javatuples`的官方頁面](https://www.javatuples.org/index.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看