Rumah  >  Soal Jawab  >  teks badan

java - TreeSet的自然排序问题,也与多态有关

高洛峰高洛峰2743 hari yang lalu542

membalas semua(2)saya akan balas

  • 黄舟

    黄舟2017-04-18 10:53:00

    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>:

    1. telah dibuat dengan Comparator<? super T>, maka pengisihan adalah berdasarkan Comparator ini

    2. 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);

    balas
    0
  • 迷茫

    迷茫2017-04-18 10:53:00

    1. Betul

    2. Sebab class Integer implements Comparable<Integer>

    balas
    0
  • Batalbalas