자바 8 Comparator 소스 데모 및 분석
3318 단어 자바8comparator소스 코드해석 하 다.
자바 8 에서 이 를 최적화 시 켰 고 Comparator 류 를 직접 호출 하면 사용자 정의 정렬 기능 을 실현 할 수 있다.예 를 들 어 특정한 필드 에 따라 순 서 를 올 리 고 특정한 필드 의 내림차 순 으로 배열 할 수 있다.그리고 null 상황 이 생기 면 어떻게 처리 할 지 등등.다음은 흔히 볼 수 있 는 기본 데이터 형식의 list 와 대상 의 집합 을 정렬 하 는 프 리 젠 테 이 션 입 니 다.
/**
* java8 Comparator
*/
public class CompareController2 {
public static void main(String[] args) {
/**
* list
*/
List<Integer> list = Arrays.asList(10,133,34,546,53,345);
// ,
list.sort(Comparator.naturalOrder());
System.out.println(list);
//
list.sort(Comparator.reverseOrder());
System.out.println(list);
/**
*
*/
List<Students> studentsList = new ArrayList<>();
studentsList.add(new Students("zhangSan", 28, "beiJing"));
studentsList.add(new Students("liSi", 25, "shangHai"));
studentsList.add(new Students("wangWu", 22));
studentsList.sort(Comparator.comparing(Students::getName));
System.out.println(" :" + studentsList);
studentsList.sort(Comparator.comparing(Students::getAge).reversed());
System.out.println(" :" + studentsList);
studentsList.sort(Comparator.comparing(Students::getAddress, Comparator.nullsLast(String::compareTo)).reversed());
System.out.println(" , , :" + studentsList);
studentsList.sort(Comparator.comparing(Students::getAddress, Comparator.nullsFirst(String::compareTo)).reversed());
System.out.println(" , , :" + studentsList);
studentsList.sort(Comparator.comparing(Students::getAddress, Comparator.nullsLast(String::compareTo)).reversed().thenComparing(Students::getAge));
System.out.println(" , , , :" + studentsList);
}
}
Comparator 의 소스 코드 분석최근 에 공 부 를 하면 서 저 는 소스 코드 를 보 는 중요성 을 깨 달 았 습 니 다.그래서 Comparator 가 어떻게 사용 하 는 지 분석 한 후에 소스 코드 를 계속 연 구 했 습 니 다.
1)우선 comparing 의 소스 코드 를 살 펴 보면 사실은 compare To 방법 이다.
2)다음 에 then Comparing 방법 을 보 세 요.사실은 compare 방법 입 니 다.우리 가 특정한 인 터 페 이 스 를 실현 하고 다시 쓰 는 방법 과 비슷 합 니 다.다만 Comparator 가 밑바닥 에서 우 리 를 도와 이 루어 졌 을 뿐 입 니 다.
3)마지막 으로 재 미 있 는 nullsFirst 방법 과 nullsLast 방법 을 살 펴 보 자.두 가지 방법 은 주로 nullsFirst 의 표지 위치 가 다 르 고 그 밑 층 은 copare 방법 을 실현 하 는 것 이다.단지 null 에 대한 판단 을 추 가 했 을 뿐 이 고 또 하 나 는 nullsFirst 의 표지 위치 에 대한 판단 이다.Get !!!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.