java - TreeSet的自然排序问题,也与多态有关
高洛峰
高洛峰 2017-04-18 10:51:00
0
2
569

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(2)
黄舟

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

迷茫
  1. Correct

  2. Parce que class Integer implements Comparable<Integer>

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal