首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

[Google Guava札记](二)base

2012-11-09 
[Google Guava笔记](二)base2?????? base:像这个包名所描述的,提供了基本的实用工具库和接口。?接口:2.1 ??

[Google Guava笔记](二)base

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

?

接口:

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

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

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

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

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

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

?

枚举类:

2.5????CaseFormat:多种ASCII大小写格式转换的工具类。枚举值有:小写的连字符、小写的下划线、lower_camel、upper_camel和大写的下划线。有一个public方法:to(CaseFormatformat, 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 charmatch):返回CharMatcher,方法内有个CharMatcher的匿名内部类,它判断一个字符是否为match。

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

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

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

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

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

?

成员方法:

matches(charc):根据c返回true或false。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

trimAndCollapseFrom(CharSequencesequence, char replacement)。

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

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

2.9???Defaults:提供了所有Java类型的默认值。有一个静态方法:defaultValue(Classtype),返回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>>接口,判定两个可迭代对象是否等效。

?

(未完待续)

以上。

?

?

热点排行