av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

如何比較2個(gè)數(shù)組相等以及如何檢出不匹配項(xiàng)

 當(dāng)我空閑的時(shí)候,我會(huì)密切地觀察讀者群里的一舉一動(dòng),不放過(guò)他們的任何一個(gè)問(wèn)題,幫助他們成長(zhǎng)雖然不是我應(yīng)盡的義務(wù),但我的確喜歡和他們交流的感覺(jué),畢竟能幫一個(gè)是一個(gè)。也許我的一個(gè)小小的舉動(dòng),就能夠他們跨越成長(zhǎng)過(guò)程中的一大步——請(qǐng)給我一次驕傲的機(jī)會(huì)嘛。

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站制作、做網(wǎng)站、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)建站推出勐臘免費(fèi)做網(wǎng)站回饋大家。

有一次,我在“石器時(shí)代”群里發(fā)現(xiàn)了 1 個(gè)有意思的提問(wèn):“如何比較 2 個(gè)數(shù)組相等以及如何檢出不匹配項(xiàng)?”嚴(yán)格意義上講,這是 2 個(gè)問(wèn)題,其一是比較數(shù)組是否相等,其二是如果數(shù)組不相等,是哪幾個(gè)元素導(dǎo)致的。

01、比較數(shù)組是否相等

可以通過(guò) Arrays.equals() 方法來(lái)比較 2 個(gè)數(shù)組是否相等,數(shù)組可以是基本數(shù)據(jù)類(lèi)型,也可以是引用數(shù)據(jù)類(lèi)型,以及泛型。我們就先拿字符串來(lái)作為示例吧。

 
 
 
 
  1. String [] str1 = {"沉","默", "王","二"}; 
  2. String [] str2 = {"沉","默", "王","二"}; 
  3. String [] str3 = {"沉","默", "王","三"}; 

現(xiàn)在,就讓我們來(lái)比較一下:str1 是否與 str2 相等,str1 是否與 str3 相等。(盡管不用代碼比較你都能猜出答案,但還是請(qǐng)假裝配合一下)

 
 
 
 
  1. String[] str1 = {"沉", "默", "王", "二"}; 
  2. String[] str2 = {"沉", "默", "王", "二"}; 
  3. String[] str3 = {"沉", "默", "王", "三"}; 
  4.  
  5. System.out.println(Arrays.equals(str1, str2)); 
  6. System.out.println(Arrays.equals(str1, str3)); 

程序輸出的結(jié)果如下所示:

 
 
 
 
  1. true 
  2. false 

不錯(cuò)不錯(cuò),和我們的預(yù)期完全相符。另外,我們還可以通過(guò)以下方法來(lái)判斷 2 個(gè)數(shù)組中指定的范圍是否相等:

 
 
 
 
  1. boolean equals(Object[] a, int aFromIndex, int aToIndex, 
  2.                          Object[] b, int bFromIndex, int bToIndex) 

來(lái)比較一下 str1 和 str3 中前 3 個(gè)元素是否相等:

 
 
 
 
  1. System.out.println(Arrays.equals(str1, 0, 3, str3, 0, 3)); 

程序輸出的結(jié)果如下所示:

 
 
 
 
  1. true 

現(xiàn)在,讓我們來(lái)自定義一個(gè)類(lèi) Writer,它有兩個(gè)字段:int 類(lèi)型的 age,和 String 類(lèi)型的 name,并重寫(xiě)了 equals() 和 hashCode() 方法。

 
 
 
 
  1. public class Writer { 
  2.     private int age; 
  3.     private String name; 
  4.  
  5.     @Override 
  6.     public boolean equals(Object o) { 
  7.         if (this == o) return true; 
  8.         if (o == null || getClass() != o.getClass()) return false; 
  9.         Writer writer = (Writer) o; 
  10.         return age == writer.age && 
  11.                 Objects.equals(name, writer.name); 
  12.     } 
  13.  
  14.     @Override 
  15.     public int hashCode() { 
  16.         return Objects.hash(age, name); 
  17.     } 
  18.  
  19.     public Writer(int age, String name) { 
  20.         this.age = age; 
  21.         this.name = name; 
  22.     } 
  23.  
  24.     // getter/setter 

來(lái)創(chuàng)建 3 個(gè) Writer 類(lèi)型的數(shù)組:

 
 
 
 
  1. Writer [] writer1 = {new Writer(18,"沉默王二"),new Writer(16,"沉默王三")}; 
  2. Writer [] writer2 = {new Writer(18,"沉默王二"),new Writer(16,"沉默王三")}; 
  3. Writer [] writer3 = {new Writer(18,"沉默王一"),new Writer(16,"沉默王三")}; 

我們來(lái)比較一下:writer1 是否與 writer2 相等,writer1 是否與 writer3 相等。

 
 
 
 
  1. System.out.println(Arrays.equals(writer1,writer2)); 
  2. System.out.println(Arrays.equals(writer1,writer3)); 

程序輸出的結(jié)果如下所示:

 
 
 
 
  1. true 
  2. false 

答案完全符合預(yù)期,因?yàn)槲覀冎貙?xiě)了 equals() 方法——如果 age 相等,name 相等,那就表明 2 個(gè) Writer 對(duì)象相等。假如我們沒(méi)有重寫(xiě)該方法,此時(shí)就可以借助 Comparator 比較器。

 
 
 
 
  1. Comparator byAge = Comparator.comparing(Writer::getAge); 
  2. Comparator byName = Comparator.comparing(Writer::getName); 

byAge 是通過(guò) Writer 的 age 比較的,byName 是通過(guò) Writer 的 name 比較的。然后我們來(lái)通過(guò)比較器 byAge 和 byName 比較一下 writer1 和 writer3。

 
 
 
 
  1. System.out.println(Arrays.equals(writer1, writer3, byAge)); 
  2. System.out.println(Arrays.equals(writer1, writer3, byName)); 

程序輸出的結(jié)果如下所示:

 
 
 
 
  1. true 
  2. false 

答案完全符合預(yù)期,writer1 數(shù)組中的 age(18 和 16)和 writer3 數(shù)組中的 age(18 和 16)完全相同;writer1 數(shù)組中的 name(沉默王二和沉默王三)和 writer3 數(shù)組中的 name(沉默王一和沉默王三)不完全相同。

02、檢出不匹配項(xiàng)

可以通過(guò) Arrays.mismatch() 方法檢出 2 個(gè)數(shù)組中哪幾個(gè)元素不相等。如果 2 個(gè)數(shù)組完全相等,該方法返回 -1;否則的話,返回第一個(gè)不匹配項(xiàng)目的下標(biāo)。

先來(lái)看看 str1 和 str2 是否有不相等的元素吧。

 
 
 
 
  1. System.out.println(Arrays.mismatch(str1, str2)); 

程序輸出的結(jié)果如下所示:

 
 
 
 
  1. -1 

和我們預(yù)期的結(jié)果一致,因?yàn)?str1 和 str2 沒(méi)有不匹配項(xiàng)。那再來(lái)看看 str1 和 str3 吧。

 
 
 
 
  1. System.out.println(Arrays.mismatch(str1, str3)); 

程序輸出的結(jié)果如下所示:

 
 
 
 

的確是從下標(biāo)為 3 的元素開(kāi)始不匹配的,因?yàn)?str1 中下標(biāo)為 3 的元素為“二”,str3 中下標(biāo)為 3 的元素為“三”。

Arrays.mismatch() 方法同樣適用于自定義類(lèi)型 Writer。

 
 
 
 
  1. System.out.println(Arrays.mismatch(writer1,writer2)); 
  2. System.out.println(Arrays.mismatch(writer1,writer3)); 

程序輸出的結(jié)果如下所示:

 
 
 
 
  1. -1 

和我們預(yù)期的結(jié)果一致,因?yàn)?writer1 和 writer2 沒(méi)有不匹配項(xiàng),writer1 和 writer3 不相等的元素是從第 1 開(kāi)始的,下標(biāo)為 0。

也可以通過(guò) Comparator 來(lái)檢出不相等的元素:

 
 
 
 
  1. System.out.println(Arrays.mismatch(writer1, writer3, byAge)); 
  2. System.out.println(Arrays.mismatch(writer1, writer3, byName)); 

程序輸出的結(jié)果如下所示:

 
 
 
 
  1. -1 

原因我就不再解釋了,因?yàn)槲艺J(rèn)為你已經(jīng)完全掌握了 Arrays.equals() 方法和 Arrays.mismatch() 方法。希望你能親自動(dòng)手試一試哦,源碼我已經(jīng)上傳到了碼云,地址如下:

https://gitee.com/qing_gee/JavaPoint/tree/master

03、鳴謝

好了,親愛(ài)的讀者朋友,以上就是本文的全部?jī)?nèi)容了,是不是又學(xué)到了新知識(shí)?我想答案是肯定的,給自己點(diǎn)個(gè)贊吧。


本文名稱:如何比較2個(gè)數(shù)組相等以及如何檢出不匹配項(xiàng)
網(wǎng)站URL:http://uogjgqi.cn/article/ccdojgg.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流