찾다

 >  Q&A  >  본문

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

高洛峰高洛峰2807일 전587

모든 응답(2)나는 대답할 것이다

  • 黄舟

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

    스크린샷의 빨간색 텍스트에 대한 이해는 기본적으로 정확하지만 완전하지는 않습니다. @jokester가 말했듯이 561행에 전체 코드를 게시하지 않았습니다. 실제로 TreeMap<T> 또는 TreeSet>을 정렬하는 경우는 두 가지입니다.

    1. 은 Comparator<? super T>로 생성되었으며 이 Comparator를 기반으로 정렬됩니다.

    2. 이 Comparator<? super T> 없이 생성된 경우 T는 Comparable을 구현해야 합니다.
    3. 그래서 TreeSet의 상황을 보면 Comparator으로 생성된 경우 Person은 Comparable을 전혀 구현할 필요가 없습니다.

    또한 Integer 자체는 Comparable 유형을 구현하고, 모든 기본 유형의 캡슐화된 객체(Long, Double, Boolean 등도 포함)와 String은 모두 Comparable을 구현하므로 물론 강제로 적용할 수 있습니다. .

    모두를 위한 마지막 질문입니다. TreeMap을 생성할 때 비교기를 사용하는 경우

    또는

    대신 Comparator<? super K> 유형을 지정해야 하는 이유는 무엇입니까? TreeMap 생성자를 참조하세요. Comparator<K> Comparator<? extends K>공개 트리맵(Comparator<? super K> 비교기);

    회신하다
    0
  • 迷茫

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

    1. 맞습니다

    2. 왜냐하면 class Integer implements Comparable<Integer>

    회신하다
    0
  • 취소회신하다