Pemahaman teks merah dalam tangkapan skrin pada asasnya betul tetapi tidak lengkap Seperti yang dikatakan oleh @jokester, anda tidak menyiarkan keseluruhan kod tersebut sebelum lain pada baris 561. Sebenarnya, terdapat dua kes untuk mengisih TreeMap<T> atau TreeSet<T>:
telah dibuat dengan Comparator<? super T>, maka pengisihan adalah berdasarkan Comparator ini
dicipta tanpa Comparator<? super T>, maka T mesti melaksanakan Comparable.
Jadi melihat situasi TreeSet<Person>, jika ia dicipta dengan Comparator<Person>, maka Person tidak perlu melaksanakan Comparable sama sekali.
Selain itu, Integer sendiri melaksanakan jenis Sebanding, dan semua jenis asas objek terkapsul (serta Long, Double, Boolean, dll.), serta String, semuanya melaksanakan Comparable, jadi sudah tentu ia boleh dipaksa .
Satu soalan terakhir untuk semua orang Jika Comparator digunakan semasa membuat TreeMap, mengapa kita perlu menentukan jenis Comparator<? super K> dan bukannya Comparator<K> atau Comparator<? extends K>? Lihat pembina TreeMap:
Peta Pokok awam(Komparator<? pembanding K> super);
Pemahaman teks merah dalam tangkapan skrin pada asasnya betul tetapi tidak lengkap Seperti yang dikatakan oleh @jokester, anda tidak menyiarkan keseluruhan kod tersebut sebelum lain pada baris 561. Sebenarnya, terdapat dua kes untuk mengisih TreeMap<T> atau TreeSet<T>:
telah dibuat dengan Comparator<? super T>, maka pengisihan adalah berdasarkan Comparator ini
dicipta tanpa Comparator<? super T>, maka T mesti melaksanakan Comparable.
Jadi melihat situasi TreeSet<Person>, jika ia dicipta dengan Comparator<Person>, maka Person tidak perlu melaksanakan Comparable sama sekali.
Selain itu, Integer sendiri melaksanakan jenis Sebanding, dan semua jenis asas objek terkapsul (serta Long, Double, Boolean, dll.), serta String, semuanya melaksanakan Comparable, jadi sudah tentu ia boleh dipaksa .
Satu soalan terakhir untuk semua orang Jika Comparator digunakan semasa membuat TreeMap, mengapa kita perlu menentukan jenis
Comparator<? super K>
dan bukannyaComparator<K>
atauComparator<? extends K>
? Lihat pembina TreeMap:Peta Pokok awam(Komparator<? pembanding K> super);
Betul
Sebab
class Integer implements Comparable<Integer>