我有兩個DTO需要使用(Arrays.equals)進行比較,它們永遠不會等於。在我查看每個屬性時,兩個DTO中的數據都是相等的,有時候它的長度等於,但Arrays.equals返回false,我嘗試使用Arrays.deepEquals,但存在相同的問題,但在某些字段中。我在調試時發現了一些問題:兩個dto的java字節數組比較使用Arrays.equals
1-在兩個DTO中,hashcode方法都不一樣。
2-字符串類型屬性中的問題。
我的問題是我如何測試和檢測哪些屬性是不同的。
這裏是我的代碼卡:
Boolean isEqual = false;
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
ObjectOutputStream oStream;
ByteArrayOutputStream bStream2 = new ByteArrayOutputStream();
ObjectOutputStream oStream2;
try {
oStream = new ObjectOutputStream(bStream);
oStream.writeObject(obj1);
byte[] obj1ByteArray = bStream.toByteArray();
oStream2 = new ObjectOutputStream(bStream2);
oStream2.writeObject(obj2);
byte[] obj2ByteArray = bStream2.toByteArray();
System.out.println("Obj1>>" + obj1ByteArray.length);
System.out.println("Obj2>>" + obj2ByteArray.length);
isEqual = Arrays.equals(obj1ByteArray, obj2ByteArray);
oStream.close();
oStream2.close();
數據卡:
Length
Obj1>>709
Obj2>>709
------------------------------------------------
Object 1
com[email protected]1ab5140
59
test_job_5555555
-100
59
1
وظيفة تجريبية 6
وظيفة تجريبية 6أخري
10
10
10.0
وظيفة تجريبية الغرض من الوظيفة 6
--------------------------------
Object 2
com[email protected]4cfc52
59
test_job_5555555
0
59
1
وظيفة تجريبية 6
وظيفة تجريبية 6أخري
10
10
10.0
وظيفة تجريبية الغرض من الوظيفة 6
謝謝。
您的兩個_JobDTO_對象:_obj1_和_obj2_根據您提供的輸出不相等,因爲_they包含不同的data_。如果您想要了解更多幫助,請發佈您的_JobDTO_類的_hashCode_和_equals_實現。不知道這些_JobDTOs_有什麼樣的屬性/屬性比我已經(嘗試)提供的幫助更難。 –