[Google Guava札记](二)base

[Google Guava笔记](二)base

2       base:像这个包名所描述的,提供了基本的实用工具库和接口。

 

接口:

2.1     FinalizableReference:如果引用被垃圾回收后还有代码需要执行,实现此接口。只有一个方法: void finalizeReferent(),这个方法在引用被垃圾回收时由后台线程调用,除非安全限制阻止了后台线程的启动,这种情况下当新的引用被创建时调用此方法。

2.2     Function<F, T>:根据输入值决定输出。有两个方法: T apply(@Nullable F input) boolean equals(@Nullable Object object)

2.3     Predicate<T>:根据输入返回 ture false,谓词。 有两个方法: boolean apply(@Nullable T input) boolean equals(@Nullable Object object)

2.4     Supplier<T>:提供某种类型的对象的类。 可以是 factory generator builder closure等。只有一个方法 T get()

2.11   Equivalence<T>:决定两个实例是否被判定为等效的策略。有两个方法: boolean equivalent(@Nullable T a, @Nullable T b) int hash(@Nullable T t)

2.28   Ticker:与时间有关的类,返回从某个定点时间到现在的纳秒数。有一个方法: read()

 

枚举类:

2.5     CaseFormat:多种 ASCII大小写格式转换的工具类。枚举值有:小写的连字符、小写的下划线、 lower_camel upper_camel和大写的下划线。有一个 public方法: to(CaseFormat format, String s),它根据 format s进行相应转换。

 

类:

2.6     Ascii:提供了一组静态变量和与 Ascii相关的静态方法。静态变量包括从 0 32,以及 127 Ascii码。 静态方法包括 toLowerCase(String) toLowerCase(Char) toUpperCase(String) toUpperCase(Char) isUpperCase(Char) isLowerCase(Char)

2.7     CharMatcher:实现了 Predicate接口,根据输入的字符返回 true false。是一个抽象类,内部有多个子类,包括公有的静态类和匿名内部类。

公有的静态变量:

          WHITESPACE CharMatcher,根据最新的 Unicode标准,判断一个字符是否是空白符。

          BREAKING_WHITESPACE CharMatcher,判断一个字符是否是可以用来分词的空白符。

ASCII CharMatcher,判断一个字符是否是 ASCII,即小于 128

DIGIT CharMatcher,根据 Unicode判断一个字符是否是数字。

JAVA_DIGIT CharMatcher,根据 Java Charactor.isDigit(char)的定义来判断一个字符是否是数字。

JAVA_LETTER CharMatcher,根据 Java Charactor.isLetter(char)的定义来判断一个字符是否是字母。

          JAVA_LETTER_OR_DIGIT CharMatcher,根据 Java Charactor.isLetterOrDigit(char)的定义来判断一个字符是否是字母或数字。

          JAVA_UPPER_CASE CharMatcher,根据 Java Charactor.isUpperCase(char)的定义来判断一个字符是否是大写格式。

          JAVA_LOWER_CASE CharMatcher,根据 Java Charactor.isLowerCase(char)的定义来判断一个字符是否是小写格式。

          JAVA_ISO_CONTROL CharMatcher,根据 Java Charactor.isISOControl(char)的定义来判断一个字符是否是 ISO控制字符, ISO控制字符的范围为 \u0000-\u001f \u007f- \u009f

          INVISIBLE CharMatcher,判断一个字符是否为不可见的,包括 SPACE_SEPARATOR, LINE_SEPARATOR, PARAGRAPH_SEPARATOR, CONTROL, FORMAT, SURROGATE, PRIVATE_USE

SINGLE_WIDTH CharMatcher,判断一个字符是否为单字,如果不能判断则猜测它是双字的,返回 false

ANY CharMatcher,任意字符。

NONE CharMatcher,与 ANY相反,不匹配任何字符。

 

静态方法:

is(final char match):返回 CharMatcher,方法内有个 CharMatcher的匿名内部类,它判断一个字符是否为 match

isNot(final char match):返回 CharMatcher,作用与 is()相反。

anyOf(final CharSequence sequence):返回 CharMatcher,判断一个字符是否在 sequence内。

noneOf(CharSequence sequence):返回 CharMatcher,与 anyOf()相反。

          inRange(final char startInclusive, final char endInclusive):返回 CharMatcher,判断一个字符是否在 startInclusive endInclusive范围内。

          forPredicate(final Predicate<? super Character> predicate):返回 CharMatcher,将参数中的 predicate包装成 CharMatcher

 

成员方法:

matches(char c):根据 c返回 true false

negate():返回与当前 CharMatcher作用相反的 CharMatcher

and(CharMatcher other):返回 this other效果的 CharMatcher

or(CharMatcher other):返回 this other效果的 CharMatcher

          precomputed():返回 CharMatcher,该 CharMatcher在检索时比原始的 CharMatcher效率高,但是预处理也需要花时间,所以只有当某个 CharMatcher需要被使用上千次的时候才有必要进行预处理。这个方法在 GWT中被调用时没有效果,无法判断 precomputed()返回的 CharMatcher是否更快,但是它消耗了很多内存,因此在浏览器中使用很不划算。

matchesAnyOf(CharSequence sequence):如果 sequence中有字符能匹配,返回 true

matchesAllOf(CharSequence sequence):如果 sequence中的所有字符都能匹配,返回 true

matchesNoneOf(CharSequence sequence):如果 sequence中的所有字符都不能匹配,返回 true

          indexIn(CharSequence sequence):返回 suquence中第一个被匹配到的字符的位置,如果没有被匹配到的字符,返回 -1

indexIn(CharSequence sequence, int start) lastIndexIn(CharSequence sequence):与上面的方法类似。

countIn(CharSequence sequence):返回 sequence中匹配到的字符数。

removeFrom(CharSequence sequence):返回 sequence删除匹配到的字符后的字符串。

retainFrom(CharSequence sequence):返回 sequence删除未匹配到的字符后的字符串。

replceFrom(CharSequence sequence, char replacement):将 sequence中被匹配到的字符替换为 replacement

replceFrom(CharSequence sequence, CharSequence replacement):与上面的方法类似。

          trimFrom(CharSequence sequence):删除 sequnce头尾被匹配到的字符。例如: CharMatcher.anyOf(" ab ").trimFrom(" abacatbab ") 返回 cat

          trimLeadingFrom(CharSequence sequence) trimTrailingFrom(CharSequence sequence)分别删除 sequence头部、尾部被匹配到的字符。

          collapseFrom(CharSequence sequence, char replacement):把 sequence中连续被匹配到的字符用一个 replacement替换。例如: CharMatcher.anyOf(" eko ").collapseFrom("bookkeeper", ' - ') 返回” b-p-r”

trimAndCollapseFrom(CharSequence sequence, char replacement)

apply(Character character) Predicate接口中声明的方法,作用与 matches相似。

2.8    Charsets:字符集,定义了所有 Java平台都支持的六个标准字符集的实例,包括: US_ASCII ISO_8859_1 UTF_8 UTF_16BE UTF_16LE UTF_16

2.9    Defaults:提供了所有 Java类型的默认值。有一个静态方法: defaultValue(Class type),返回 type的默认值。

2.10  Enums

2.12  Equivalences:包含一个静态的创建 Equivalence实例的工厂方法。

静态方法:

equals():返回一个 Equivalence<Object>,如果两个对象相等 (equal),则可判定为等效。

identity():返回一个 Equivalence<Object>,如果两个对象是同一个对象,判定为等效。

          pairwise(Equivalence<? super T> elementEquivalence):返回一个 Equivalence<Object>,是 PairwiseEquivalence<T>类型的,对可迭代的对象进行判定。判定的策略是对相同位置的元素用 elementEquivalence进行判定,如果至少有一对元素不等效,那么判定这两个可迭代对象不等效。

2.13  PairwiseEquivalence<T>:实现了 Equivalence<Iterable<T>>接口,判定两个可迭代对象是否等效。

 

(未完待续)

以上。