>  기사  >  Java  >  Java 클래스 라이브러리-Guava-순서 비교기

Java 클래스 라이브러리-Guava-순서 비교기

黄舟
黄舟원래의
2017-01-19 13:27:031520검색

Ordering은 Guava 클래스 라이브러리에서 제공하는 선명하고 강력한 비교 도구입니다. Guava의 Ordering은 JDK Comparator보다 강력합니다. 확장이 매우 쉽고 복잡한 비교기를 쉽게 구성한 다음 컨테이너 비교, 정렬 및 기타 작업에 사용할 수 있습니다.

기본적으로 Ordering 인스턴스는 특별한 Comparator 인스턴스에 지나지 않습니다. Ordering은 단순히 비교기(예: Collections.max)에 의존하는 메서드를 취하여 인스턴스 메서드로 사용할 수 있도록 합니다. 또한 Ordering은 메서드 호출 연결 및 기존 비교기 기능 향상을 제공합니다.

Ordering의 구체적인 방법과 간단한 사용법을 살펴보겠습니다.

일반적인 정적 메서드:

natural(): Comparable 유형의 자연 순서를 사용합니다. 예를 들어 정수는 작은 것부터 큰 것까지, 문자열은 사전 순서입니다. usingToString( ): toString()에서 반환된 문자열을 사용하여 사전 순서로 정렬합니다.

 arbitrary(): 모든 개체의 임의 순서를 반환합니다. 즉, Compare(a, b) == 0입니다. a == b (동등성). 순서 자체는 의미가 없지만 VM 수명 동안 일정합니다.

[code]import java.util.List;
import org.junit.Test;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;

public class OrderingTest {

    @Test
    public void testStaticOrdering(){
        List<String> list = Lists.newArrayList();
        list.add("peida");
        list.add("jerry");
        list.add("harry");
        list.add("eva");
        list.add("jhon");
        list.add("neron");

        System.out.println("list:"+ list);

        Ordering<String> naturalOrdering = Ordering.natural();        
        Ordering<Object> usingToStringOrdering = Ordering.usingToString();
        Ordering<Object> arbitraryOrdering = Ordering.arbitrary();

        System.out.println("naturalOrdering:"+ naturalOrdering.sortedCopy(list));     
        System.out.println("usingToStringOrdering:"+ usingToStringOrdering.sortedCopy(list));        
        System.out.println("arbitraryOrdering:"+ arbitraryOrdering.sortedCopy(list));
    }
}
[code]list:[peida, jerry, harry, eva, jhon, neron]
naturalOrdering:[eva, harry, jerry, jhon, neron, peida]
usingToStringOrdering:[eva, harry, jerry, jhon, neron, peida]
arbitraryOrdering:[neron, harry, eva, jerry, peida, jhon]

Reverse(): 현재 Ordering의 역순을 반환합니다.

NullsFirst(): null이 아닌 요소 앞에 null을 배치하는 Ordering을 반환합니다. 그렇지 않으면 원본과 동일합니다. Ordering ;

NullsLast(): null이 아닌 요소 뒤에 null을 배치하는 Ordering을 반환하고 나머지는 원래 Ordering과 동일합니다(Comparator): Ordering을 반환합니다. Comparator , Comparator 를 두 번째 정렬 요소로 사용합니다. 예를 들어, 먼저 버그 수준에 따라 정렬한 다음 우선순위에 따라

사전순(): 다음에 따라 반복되는 순서를 반환합니다.

onResultOf(Function): 각 요소에 함수를 적용한 후 원래 순서를 사용하여 정렬합니다.

maximumOf(Iterable iterable, int k): 지정된 k- 반복 가능한 요소를 가장 큰 것부터 가장 작은 것 순으로 정렬합니다. 불안정하다.

lessOf(Iterable iterable,int k): 지정된 k번째 iterable의 가장 작은 요소를 가장 작은 것부터 큰 것 순으로 반환합니다. 불안정하다.

isOrdered(Iterable): 순서 여부에 관계없이 Iterable은 2개 요소보다 작을 수 없습니다.

isStrictlyOrdered(Iterable): 엄격하게 주문되었는지 여부입니다. Iterable은 두 개 미만의 요소를 가질 수 없습니다.

sortedCopy(Iterable): 지정된 요소를 목록의 정렬된 복사본으로 반환합니다.

[code]import java.util.List;

import org.junit.Test;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;

public class OrderingTest {

    @Test
    public void testOrdering(){
        List<String> list = Lists.newArrayList();
        list.add("peida");
        list.add("jerry");
        list.add("harry");
        list.add("eva");
        list.add("jhon");
        list.add("neron");

        System.out.println("list:"+ list);

        Ordering<String> naturalOrdering = Ordering.natural();
        System.out.println("naturalOrdering:"+ naturalOrdering.sortedCopy(list));    

        List<Integer> listReduce= Lists.newArrayList();
        for(int i=9;i>0;i--){
            listReduce.add(i);
        }

        List<Integer> listtest= Lists.newArrayList();
        listtest.add(1);
        listtest.add(1);
        listtest.add(1);
        listtest.add(2);

        Ordering<Integer> naturalIntReduceOrdering = Ordering.natural();

        System.out.println("listtest:"+ listtest);
        System.out.println(naturalIntReduceOrdering.isOrdered(listtest));
        System.out.println(naturalIntReduceOrdering.isStrictlyOrdered(listtest));

        System.out.println("naturalIntReduceOrdering:"+ naturalIntReduceOrdering.sortedCopy(listReduce));
        System.out.println("listReduce:"+ listReduce);

        System.out.println(naturalIntReduceOrdering.isOrdered(naturalIntReduceOrdering.sortedCopy(listReduce)));
        System.out.println(naturalIntReduceOrdering.isStrictlyOrdered(naturalIntReduceOrdering.sortedCopy(listReduce)));

        Ordering<String> natural = Ordering.natural();

        List<String> abc = ImmutableList.of("a", "b", "c");
        System.out.println(natural.isOrdered(abc));
        System.out.println(natural.isStrictlyOrdered(abc));

        System.out.println("isOrdered reverse :"+ natural.reverse().isOrdered(abc));

        List<String> cba = ImmutableList.of("c", "b", "a");
        System.out.println(natural.isOrdered(cba));
        System.out.println(natural.isStrictlyOrdered(cba));
        System.out.println(cba = natural.sortedCopy(cba));

        System.out.println("max:"+natural.max(cba));
        System.out.println("min:"+natural.min(cba));

        System.out.println("leastOf:"+natural.leastOf(cba, 2));
        System.out.println("naturalOrdering:"+ naturalOrdering.sortedCopy(list));    
        System.out.println("leastOf list:"+naturalOrdering.leastOf(list, 3));
        System.out.println("greatestOf:"+naturalOrdering.greatestOf(list, 3));
        System.out.println("reverse list :"+ naturalOrdering.reverse().sortedCopy(list));    
        System.out.println("isOrdered list :"+ naturalOrdering.isOrdered(list));
        System.out.println("isOrdered list :"+ naturalOrdering.reverse().isOrdered(list));
        list.add(null);
        System.out.println(" add null list:"+list);
        System.out.println("nullsFirst list :"+ naturalOrdering.nullsFirst().sortedCopy(list));
        System.out.println("nullsLast list :"+ naturalOrdering.nullsLast().sortedCopy(list));
    }

}

//============输出==============
list:[peida, jerry, harry, eva, jhon, neron]
naturalOrdering:[eva, harry, jerry, jhon, neron, peida]
listtest:[1, 1, 1, 2]
true
false
naturalIntReduceOrdering:[1, 2, 3, 4, 5, 6, 7, 8, 9]
listReduce:[9, 8, 7, 6, 5, 4, 3, 2, 1]
true
true
true
true
isOrdered reverse :false
false
false
[a, b, c]
max:c
min:a
leastOf:[a, b]
naturalOrdering:[eva, harry, jerry, jhon, neron, peida]
leastOf list:[eva, harry, jerry]
greatestOf:[peida, neron, jhon]
reverse list :[peida, neron, jhon, jerry, harry, eva]
isOrdered list :false
isOrdered list :false
 add null list:[peida, jerry, harry, eva, jhon, neron, null]
nullsFirst list :[null, eva, harry, jerry, jhon, neron, peida]
nullsLast list :[eva, harry, jerry, jhon, neron, peida, null]

위 내용은 Java-Class Library-Guava-Ordering Comparator 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.