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

高洛峰
高洛峰

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

全員に返信(2)
黄舟

スクリーンショットの赤いテキストの理解は基本的に正しいですが、@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
迷茫
  1. 正しい

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート