本文目錄一覽:
在Java中用於比較的類和方法有哪些?
對於Class
A;Class
B兩個類,比較它們有兩種比較
A
==
B
比較內存地址
A.equals(B)默認比較hashcode
第一種一般不達不到我們要的效果,所以一般選擇覆蓋類的equals方法來實現比較類
一般比較兩個類,會比較是不是一種類,類里的私有變量是否相等,具體看你的邏輯要求是什麼樣的!
java怎麼比較兩個list是否相同?
判斷兩個list集合的元素個數是否相等。如果不相等則兩個list集合也不相等,判斷結束,如果相等則進入第二步判斷
判斷list1的元素是否全部在list2中。遍歷list1,取出list1中的元素,依次去list2中比較是否list2也存在這個元素。如果有任何一個list1中的元素在list2中不存在,則兩個list集合不相等,如果全部存在則兩個list集合相等。
這裡需要說明一點,因為第一步中已經判斷list1和list2的元素個數是相等的,所以第二步中如果list1的元素全部在list2中,則可以證明list1與list2相等。不需要再遍歷list2中的元素,去list1中判斷是否存在。
以下是上訴過程的Java代碼例子:public boolean equalList(List list1, List list2) {if (list1.size() != list2.size())
return false;for (Object object : list1) {if (!list2.contains(object))return false;}return true;}
以上過程適用於所有編程語言。另外不同編程語言還提供了一些其他方法,所以對於不同編程語言還可以有其他寫法。
比如Java中為list集合提供了containsAll方法。所以對於Java語言還可以這麼寫:
public boolean equalList(List list1, List list2) {if (list1.size() != list2.size())return false;if(list2.containsAll(list1))return true;return false;}
還可以簡寫成這樣:public boolean equalList(List list1, List list2) {return (list1.size() == list2.size()) list1.containsAll(list2);}
Java是一種可以撰寫跨平台應用軟件的面向對象的程序設計語言。Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、遊戲控制台、科學超級計算機、流動電話和互聯網,同時擁有全球最大的開發者專業社群。
Java由四方面組成:
Java編程語言,即語法。
Java文件格式,即各種文件夾、文件的後綴。
Java虛擬機(JVM),即處理*.class文件的解釋器。
Java應用程序接口(Java API)。
用java如何比較兩個字符的不同?
答案A
序號:1 2 3 4
數組:a a a b
next: 0 1 2 3
注意上邊序號、數組和next的對應關係
求next值的過程:
前兩位:next數組值前兩位一定為01,即aaab中的前兩位aa對應01,如上表中next第1,2位為0和1.其實這就可以選出答案了.
第三位:3a前面是2a(2a表示序號為2的a),2a的next數組值為1,找到序號為1的字符, 即1a,將2a和1a相比,兩者相同,都是a,則3a的next值為2a的next值加1,即2;
第四位:4b前3a的next為2,找到序號為2的字符, 即2a, 將3a與2a相比,二者相同,則其next值為3a的next加1,為3.
結果為0123,選A
如果比較的時候碰到與前一位字符「不同」怎麼辦?如求下列序號4的next值
序號: 1 2 3 4
數組: a a b a
next: 0 1 2 1
以前一位的next值為序號,找到這個序號對應的字符,再進行比較,4a前一位是3b, next值為2, 找到序號2對應的2a, 比較3b和2a, 兩者不同, 再重複這一步驟, 找到2a的next值是1,比較3b和1a, 不同, 那麼所求的4a的next就是1, 如果相同就是2a的next值加1,為2。
做個練習:xyxyyxxyx,求它的next數組?
答案是011231223,你做對了嗎?
java中的字符串比較方法
java中的字符串比較方法:
1)string1.equals(string2)
2) str1==str2 。
java中字符串的比較是==比較引用,equals 比較值的做法。但是不同的聲明方法字符串的比較結果也是不同的。
例如: String str1=new String(“a”);
String str2=new String(“a”);
str1==str2 輸出false
str1.equals(str2) 輸出true
而如果這樣聲明
String str1=”a”;
String str2=”a”;
str1==str2 輸出true
str1.equals(str2) 輸出true
這是因為 equals 方法本來也是比較引用的字符串類在實現的時候重寫了該方法。
第一種聲明方法等於是聲明了兩個對象,用』==『比較是時候比較的是引用輸出的是false 由於他們的值相同用equals的時候就比較的是值了,輸出true。
第二種情況不是因為比較有與第一種有差異,而是因為聲明有差異,第二種聲明方法在聲明的時候有堆或堆棧 共用的現象,也就是說 在聲明的時候如果如果聲明為類屬性他會檢查在堆棧中有沒有與現在聲明的是相同結構的字符串。如果有就直接將地址指向已有內存地址。聲明在方法內部的局部變量原理一樣只不過他是堆棧共享。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/295867.html