ホームページ  >  に質問  >  本文

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

高洛峰高洛峰2743日前541

全員に返信(2)返信します

  • 黄舟

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

    スクリーンショットの赤いテキストの理解は基本的に正しいですが、@jokester が言ったように、561 行目の else の前の部分に注意してください。実際、TreeMap<T> または TreeSet<T> を並べ替えるには 2 つのケースがあります。

    1. Comparator<? super T> で作成された場合、並べ替えはこの Comparator に基づいて行われます。

      Comparator<? super T> を使用せずに作成する場合、T は Comparable を実装する必要があります。
    2. つまり、TreeSet<person> の状況を見ると、Comparator<person> で作成されている場合、 person は Comparable を実装する必要がまったくありません。
    さらに、Integer 自体は Comparable 型を実装しており、カプセル化されたオブジェクトのすべての基本型 (Long、Double、Boolean なども同様)、および String もすべて Comparable を実装しているため、もちろん強制することができます。

    皆さんへの最後の質問です。TreeMap の作成時に Comparator が使用される場合、なぜタイプを指定する必要があるのですか? TreeMap のコンストラクターを参照してください:

    パブリック ツリーマップ(コンパレータ<? スーパー K> コンパレータ);

    返事
    0
  • 迷茫

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

    1. 正しい

    2. だってclass Integer implements Comparable<Integer>

    返事
    0
  • キャンセル返事