Guavaライブラリ学習:Collection(八)Rangeを学ぶ


リンク先:http://www.xx566.com/detail/148.html
    前のGuavaライブラリの学習:Collection(7)Tableを勉強しました.Guava定義のTableデータ構造を勉強しました.Map<R、Map<C、V>という複雑な集合構造の遍歴と価値問題を解決するために、今回は新しいタイプのRange(区間)を勉強します.defines the boundaries around a contigous span of values of some Comprable typeは、比較可能なタイプの連続する値のために連続境界を定義する.
 
    まず、Gava Rangeのソースコードを読んで、私達はその中の公共の方法を整理して、Rangeの使用とその作用を研究しにきて、数学の上で区間の定義に関して、いつも開閉の原則があって、Rangeの定義の中でもいくつかの数学の知識に関連して、ここではもういらないです.
 
Range open(C lower,C uper):Rangeを返します.lowerよりもuperの範囲よりも厳格な値を含みます.数学的表現(lower,uper)
Range closed(C lower,C uper):Rangeを返します.lowerがuperの範囲に等しいすべての値を含みます.数学は[lower,uper]を表します.
Range closed Open( C lower,C uper):Rangeを返します.lowerより厳格でuperより小さい値を含みます.数学は[lower,uper]を表します.
Range openCloed( C lower、C uper:Rangeを返します.lowerよりも厳格で、uperの範囲に等しいすべての値を含みます.数学的表現(lower、uper)
Range range( C lower,BoundType lowerType,C uper,BoundType uperType):Rangeを返します.lowerとuperの範囲のすべての値を含みます.臨界値の開閉はBoundTypeで設定できます.
 
Range lessThan(C endpoint):endpoint以下のすべての値Rangeを返します.
Range at Most(C endpoint):endpoint以下のすべての値Rangeを返します.
Range up To( C endpoint,BoundType boundType):上限臨界値がendpointの区間に戻り、上限開閉性はboundTypeで指定されます.
Range greaterThan(C endpoint):endpointよりも厳格な値Rangeを返します.
Range at Least(C endpoint):endpoint以上のすべての値Rangeを返します.
Range downTo( C endpoint,BoundType boundType):下限臨界値がendpointの区間に戻り、下限開閉性はboundTypeで指定します.
 
Range all():タイプCのすべての値を含むRangeを返します.
Range singleton(C value):唯一の着信valueを含むRangeを返す.
Range enclose All Iterable values):Rangeに戻るとvaluesに入ると比較した後の最小範囲の区間です.
 
bollan has LowerBound():Rangeに戻るには下限がありますか?
C lowerEnd point():Range下限の臨界点値を返します.
BoundType lowerBoundType():Rangeに戻る下限タイプBoundType、すなわち開閉性 
 
bollan has UpperBound():Rangeに戻るには上限がありますか?
C upper Edpoint():Range上限の臨界点値を返します.
BoundType uper BoundType():Rangeに戻る上限タイプBoundType、すなわち開閉性 
 
bollan isEmpty():Rangeが空かどうか、すなわち上下限が等しいかどうかを判断する.
bollan contains(C value):Rangeに指定されたvalueが含まれているかどうかを判断する.
bolean contains All(Iterablevalues):指定valuesの中にすべての値がRangeに含まれているかどうかを判断する.
 
bolean encloses(Range other):着信Rangeに戻るかどうかは、この方法を呼び出すRangeに含まれています.
bolean isConneced(Range other):二つのRangeを返して連続的に行くことができますか?
 
Range intersectedRange:二つのRangeの最大の交差点を返します.もしRangeが交差していないなら、異常なIllgalArgement Exceptionを投げます.
Range span(Range other):二つのRangeの合併を返します.
Range canonical(Discete Domain domann):与えられたdomain離散ドメインに戻るRangeの仕様
 
    Rangeが提供する方法は多くて、簡単です.ここではコードの例を順次行いません.Rangeの応用シーンについて簡単に例を書いて勉強します.
package guava;
 
import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.ComparisonChain;
import com.google.common.collect.Range;
 
/**
 * Range:                  
 * User: Realfighter
 * Date: 2014/10/16
 * Time: 22:18
 */
public class RangeTest {
 
 
    public static void main(String[] args) {
        //      Person     
        Function<Person, Integer> ageFunction = new Function<Person, Integer>() {
            @Override
            public Integer apply(Person input) {
                return input.getAge();
            }
        };
        //          25  30    
        Range<Integer> ageRange = Range.closedOpen(25, 30);
        //            Person   
        //  :Range   Predicate  ,  compose      ageRange
        Predicate<Person> personPredicate = Predicates.compose(ageRange, ageFunction);
        Person person = new Person("  ", 30);
        System.out.println(personPredicate.apply(person));//false,     
    }
 
}
 
//Person   Comparable  ,              Person 
//   Comparable        ,       Range
class Person implements Comparable<Person> {
    private Integer age;//  
    private String name;//  
 
    @Override
    public int compareTo(Person o) {
        //  Guava   ComparisonChain         
        return ComparisonChain.start()
                .compare(this.name, o.getName())
                .compare(this.age, o.getAge()).result();
    }
 
    public Integer getAge() {
        return age;
    }
 
    public void setAge(Integer age) {
        this.age = age;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}
    より多くのCompriso Charinは、Guava学習:GuavaのComprison Charin類の学習と使用を参照してください.
    詳細Functionsは、Guavaライブラリ学習:関数プログラミング(一)FunctionとFunctionsを使ってオブジェクト変換を行います.
    詳細Predicatesについては、Guavaライブラリ学習:関数プログラミング(2)PredicateとPredicatesを用いて、オブジェクトフィルタリングを行ってください.