日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
我敢打賭你一定沒用過Java中的這個類!

在 Java 中有這樣的一個類,平時可能都用不到,但是需要的時候還是會很方便的,它就是 Java 中的javafx.util.Pair。在介紹 Pair 的使用之前我們先看看下面的例子。

創(chuàng)新互聯(lián)長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為??谄髽I(yè)提供專業(yè)的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計,??诰W(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

如果對 Python 或者 GO 這兩個語言有了解的,應(yīng)該知道這兩種語言是有下面這樣的特性,那就是一個函數(shù)可以返回多個值,如下所示:

Python 示例:

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

"""
日期:2022-07-09 12:14
描述:a test module

"""

__author__ = 'ziyou'


def mul_result(a, b):
key = "key"
value = a + b
return key, value


if __name__ == '__main__':
key, mul = mul_result(3, 4)
print(key)
print(mul)

GO 示例:

package main

import "fmt"

func mul_result(a, b int) (key string, value int) {
key = "key"
value = a + b
return key, value
}

func main() {
key, value := mul_result(3, 4)
fmt.Println(key)
fmt.Println(value)
}

mul_result 函數(shù)接收兩個入?yún)?,并且同時也返回兩個結(jié)果,在調(diào)用的地方可以直接獲取到兩個返回值。

那么在 Java 語言中能否實現(xiàn)這樣的效果呢?

有的小伙伴就說了,那不是 so easy 嗎?我可以定義一個實體類,想返回多少個字段就返回多少個字段,還有的小伙伴就說了,我可以利用集合不管是 List 還是 Map 都可以實現(xiàn),如下所示:

  public static void main(String[] args) {
Map result = mul_result(3, 4);
System.out.println(result.get("key"));
System.out.println(result.get("value"));
}

public static Map mul_result(int a, int b) {
Map result = new HashMap<>();
result.put("key", "key");
result.put("value", a + b);
return result;
}

這種做法確實可以,而且很多時候我們就是這么使用的,對于確定的類型我們可以使用確定類型的集合,對于不確定類型我們可以用 Object 類型。不過當(dāng)對于有時候只有兩個固定的 key-value 需要返回的時候,我們就可以用一種更優(yōu)雅的 Pair 形式來進(jìn)行處理。

  public static void main(String[] args) {
Pair pair = testPair(3, 4);
System.out.println(pair.getKey());
System.out.println(pair.getValue());
}

public static Pair testPair(int a, int b) {
Pair pair = new Pair<>("key", a + b);
return pair;
}

這里使用的 Pair 是 JDK 自帶的類javafx.util.Pair,Pair 對象通過構(gòu)造函數(shù)創(chuàng)建過后,是不能進(jìn)行修改的,除了 Pair 之外,JDK 還有另外兩個一樣功能的類可以使用,如下所示:

public static void main(String[] args) {

AbstractMap.SimpleEntry simpleEntry = new AbstractMap.SimpleEntry<>("Java極客技術(shù)", 666);
System.out.println(simpleEntry.getKey());
System.out.println(simpleEntry.getValue());
simpleEntry.setValue(6666);

AbstractMap.SimpleImmutableEntry immutableEntry = new AbstractMap.SimpleImmutableEntry<>("Java極客技術(shù)", 666);
System.out.println(immutableEntry.getKey());
System.out.println(immutableEntry.getValue());
immutableEntry.setValue(6666);

}

在抽象類 AbstractMap 中有 SimpleEntry 和 SimpleImmutableEntry 這兩個子類也有同樣的效果,另外從名字上我們也可以看出來 SimpleImmutableEntry 是不支持修改,如果進(jìn)行了修改會報錯 UnsupportedOperationException,上面的代碼運行的效果如下:

Pair 類的使用場景主要就是在一些需要返回固定配對的地方,真正遇到的場景可能也不太多,所以大家在日常的工作中也并不常用,而且可替代的方案也有很多。

其實通過 JDK 的源碼我們可以看到 Pair 的實現(xiàn)也特別簡單,底層也就是包含兩個字段 key,value 的實體類,跟我們自己寫的沒太大的區(qū)別,不過既然 JDK 已經(jīng)給我提供的具體的實現(xiàn)為何不采用拿來主義呢?

寫到這里有的小伙伴就要問了,那我要想返回一個三元組怎么辦呢?Python 和 GO 我直接加一個返回值就行了,在 Java 這里不行了吧。確實JDK 本身并沒有提供三元組的實現(xiàn),如果真的需要我們可以使用 Pair 自己來構(gòu)造一個三元組,不過這個世界上總有一些好事之者已經(jīng)幫我們做好了。

Javatuples 是一個第三方的 Java 元組庫,這個庫目前實現(xiàn)了最多十個元組,如果要實現(xiàn)常用的三元組或者四元組可以使用這個組件,不過更多元組的使用場景并不多,而且也不是很靈活,還是乖乖自定義實體吧。

感興趣的朋友可以自己試試這個組件,在 pom 文件中加入如下依賴:

    
org.javatuples
javatuples
1.2

其中各個數(shù)量的元組類名稱如下,不得不說十元組的數(shù)量已經(jīng)不算少了,一般這種情況還是使用實體來的方便:

Unit (1 element)
Pair (2 elements)
Triplet (3 elements)
Quartet (4 elements)
Quintet (5 elements)
Sextet (6 elements)
Septet (7 elements)
Octet (8 elements)
Ennead (9 elements)
Decade (10 elements)

網(wǎng)站名稱:我敢打賭你一定沒用過Java中的這個類!
分享地址:
http://www.5511xx.com/article/cdcjdip.html