Maison  >  Questions et réponses  >  le corps du texte

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

高洛峰高洛峰2743 Il y a quelques jours538

répondre à tous(2)je répondrai

  • 黄舟

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

    La compréhension du texte rouge dans la capture d'écran est fondamentalement correcte mais pas complète. Comme @jokester l'a dit, vous n'avez pas publié l'intégralité du code. Faites attention à la partie précédente sur la ligne 561. En fait, il existe deux cas de tri TreeMap<T> ou TreeSet<T> :

    1. a été créé avec Comparator<? super T>, alors le tri est basé sur ce Comparator

    2. est créé sans Comparator<? super T>, alors T doit implémenter Comparable.

    Donc, en regardant la situation de TreeSet<Person>, s'il est créé avec Comparator<Person>, alors Person n'a pas du tout besoin d'implémenter Comparable.

    De plus, Integer lui-même implémente le type Comparable, et tous les types de base d'objets encapsulés (ainsi que Long, Double, Boolean, etc.), ainsi que String, implémentent tous Comparable, donc bien sûr, il peut être forcé .

    Une dernière question pour tout le monde. Si un Comparator est utilisé lors de la création d'un TreeMap, pourquoi devons-nous spécifier le type Comparator<? super K> au lieu de Comparator<K> ou Comparator<? extends K> ? Voir un constructeur de TreeMap :

    public TreeMap(Comparator<? super K> comparateur);

    répondre
    0
  • 迷茫

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

    1. Correct

    2. Parce que class Integer implements Comparable<Integer>

    répondre
    0
  • Annulerrépondre