읽기 소스 Apache-commons-lang3-3.1(둘)

ObjectUtils류는 toString, equals,hashcode 생성 전략 등 방법을 다시 실현했고null 대상의 처리, 대상의 비교, 한 그룹의 대상에 대상의 빈번한 출현, 최적 추측 전략, 복제 방법을 추가했다.
ObjectUtils 클래스의 기본 static 방법:
defaultIfNull(T,  T)
매개 변수 1은null이고 매개 변수 2로 대체합니다
firstNonNull(T...)
지정한 매개 변수 목록에서null이 아닌 첫 번째 요소 가져오기
equals(Object, Object)
notEqual(Object, Object)
hashCode(Object)
hashCodeMulti(Object...)
다중 대상hashcode 생성 정책
identityToString(Object)
identityToString(StringBuffer, Object)
toString(Object)
toString(Object, String)
min(T...)
지정한 매개 변수 목록에서 가장 작은 요소 가져오기
max(T...)
지정된 매개변수 목록에서 가장 큰 요소 가져오기
compare(T, T)
두 매개 변수의 크기를 비교합니다. 기본값은null보다 작습니다.
compare(T, T, boolean)
두 개의 매개 변수의 크기를 비교합니다. 매개 변수 3은null의 크기를 설정합니다.false는null이 아닌 값보다 작고true는 상반됩니다
median(T...)
매개 변수 목록의 중간 값을 가장 좋은 추측으로 가져옵니다. 만약 목록 수가 짝수라면 중간 값은 낮은 값으로 가져옵니다
median(Comparator,  T...)
재부팅 방법, 최적 추측 정렬 정책 제공
mode(T...)
매개 변수 목록에서 가장 자주 나타나는 항목 가져오기
clone(T)
cloneIfPossible(T)
1.compare(T, T, boolean) 객체 비교를 위한 새로운 정책입니다.
compare가 정적 메서드인 경우 ObjectUtils.compare(a,b,false)를 비교합니다.
소스 코드:
public static <T extends Comparable<? super T>> int compare(T c1, T c2,
            boolean nullGreater) {
        if (c1 == c2) {
            return 0;
        } else if (c1 == null) {
            return nullGreater ? 1 : -1;
        } else if (c2 == null) {
            return nullGreater ? -1 : 1;
        }
        return c1.compareTo(c2);
    }

소스 코드에서 분석하면, 인자 null Greater가true일 때null은null이 아닌 대상보다 크고,false일 때null은null이 아닌 대상보다 작다.
2.median(Comparator,  T...)및 median(T...)
이 두 가지 방법은 다시 불러옵니다. 첫 번째 방법은 매개 변수 목록 대상의 정렬 정책을 제공하고, 두 번째 방법은 자바에서 Tree의 기본 정렬 정책을 사용합니다.목적은 매개 변수 서열의 중간 요소를 찾아내는 것이다. 만약에 매개 변수 서열 요소의 수가 짝수이면 중간 요소는 낮은 위치를 취한다.
범위 객체가 있는 Range 클래스비교 가능한 객체에 적합하며 Range 범위는 변경되지 않으며 모든 유형의 객체 범위가 존재할 수 있으며 범위 내의 요소 유형은 일치해야 합니다.
Range 클래스의 기본 정적 방법:
접근 방법
getMinimum()
최소 요소 가져오기
getMaximum()
최대 요소 가져오기
getComparator()
비교기 객체 가져오기
isNaturalOrdering()
자연 정렬 여부를 판단하다
원소류 방법
contains(T)
객체 액세스 클래스에 T 요소가 있는지 판단
isBefore(T)
T-요소가 객체의 최대 범위에 있는지 판단한 후
isAfter(T)
T-요소가 객체의 최소 범위 앞에 있는지 여부를 판단합니다.
isStartedBy(T)
T 요소가 객체 범위의 시작 요소인지 여부를 판단합니다. 즉, T=minElement
isEndedBy(T)
T 요소가 객체 범위 끝 요소인지 여부를 판단합니다. 즉, T==maxElement
elementCompareTo(T)
T 요소가 객체에 액세스한 위치를 판단하고 int 값을 반환합니다. 위치는 -1[minElement 0 maxElement]1
범위 방법
다음 방법의 실행 조건은 범위 요소 유형이 일치하고 비교 정책이 일치합니다 (compare)
containsRange(Range)
매개 변수 범위 대상이 대상 범위에 포함될지 여부
isAfterRange(Range)
매개 변수 범위 대상이 대상 범위 앞에 있는지 여부
isBeforeRange(Range)
매개 변수 범위 대상이 대상 범위 뒤에 있는지 여부
isOverlappedBy(Range)
매개 변수 범위 대상과 대상 범위가 교차하는지 여부
intersectionWith(Range)
매개 변수 범위 대상과 대상 범위의 교차 범위 대상을 구하다
1. Range 클래스에는final 유형의Comparatorcomparator 속성 대상이 있다. 즉, 변할 수 없는 범위 대상은 비교 전략을 제공해야 한다.
2. Range 클래스의 기본 비교 전략은 자연 비교
소스 코드는 다음과 같습니다.
public int compare(Object obj1, Object obj2) {
            return ((Comparable) obj1).compareTo(obj2);
        }

Range 클래스와 ObjectUtils 클래스는 모두 Object를 바탕으로 이루어져 관리 대상에 큰 편의를 가진다.
본문은'야생마 홍진'블로그에서 나왔습니다. 전재를 사절합니다!

좋은 웹페이지 즐겨찾기