Adakah dua objek akan sentiasa sama apabila kaedah compareTo () mereka mengembalikan sifar?
Adakah dua objek akan sentiasa sama apabila kaedah compareTo () mereka mengembalikan sifar?

Video: Adakah dua objek akan sentiasa sama apabila kaedah compareTo () mereka mengembalikan sifar?

Video: Adakah dua objek akan sentiasa sama apabila kaedah compareTo () mereka mengembalikan sifar?
Video: Bagi seorang penyamun, usaha anda tidak bernilai 2024, April
Anonim

Ia ialah mengesyorkan itu bandingkanKepada sahaja pulangan 0, jika panggilan ke sama pada objek yang sama akan kembali benar: bandingkanKepada (e2) == 0 mempunyai yang sama nilai boolean sebagai e1. sama (e2) untuk setiap e1 dan e2 kelas C. Perhatikan bahawa nol ialah bukan contoh mana-mana kelas, dan e.

Tambahan pula, adakah mungkin sama dengan () mengembalikan palsu walaupun kandungan dua objek adalah sama?

4 Jawapan. Dalam java kaedah public boolean sama ( Objek obj) diwarisi daripada Objek . Walau bagaimanapun, pelaksanaan kaedah seperti yang ditakrifkan dalam Objek kelas adalah bahawa sama kaedah akan kembali jika dan hanya jika yang dua objek dibandingkan ialah sama contoh.

Seterusnya, persoalannya ialah, mengapa compareTo () harus konsisten dengan kaedah equals () di Jawa? Hal ini demikian kerana antara muka Peta ditakrifkan dari segi sama operasi, tetapi peta melakukan semua perbandingan utama menggunakannya bandingkanKepada (atau bandingkan) kaedah , jadi dua kunci yang dianggap sama rata dengan ini kaedah adalah, dari sudut peta yang disusun, sama rata.

Memandangkan ini dalam pandangan, apakah perbezaan antara == sama dengan () dan kaedah compareTo ()?

bandingkanKepada : Membandingkan dua rentetan secara leksikografi. sama : Membandingkan rentetan ini dengan objek yang ditentukan. bandingkanKepada membandingkan dua rentetan dengan aksaranya (pada indeks yang sama) dan mengembalikan integer (positif atau negatif) dengan sewajarnya. sama dengan() menyemak sama ada dua objek adalah sama atau tidak dan mengembalikan boolean.

Bolehkah kita mengatasi kaedah compareTo?

Gantikan kaedah compareTo Ia harus mengembalikan integer negatif (biasanya -1), jika objek pencetus semasa kurang daripada yang diluluskan satu , dan integer positif (biasanya +1) jika lebih besar daripada, dan 0 jika sama. kaedah compareTo harus membuang pengecualian jika objek yang diluluskan mempunyai jenis yang tidak serasi atau null.

Disyorkan: