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

高洛峰
高洛峰

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

모든 응답(2)
黄舟

스크린샷의 빨간색 텍스트에 대한 이해는 기본적으로 정확하지만 완전하지는 않습니다. @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> 비교기);

迷茫
  1. 맞습니다

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿