[Guava学习笔记]Basic Utilities: Null, 前置条件, Object方法, 排序, 异常

时间:2023-07-14 10:22:13

我的技术博客经常被流氓网站恶意爬取转载。请移步原文:http://www.cnblogs.com/hamhog/p/3842433.html,享受整齐的排版、有效的链接、正确的代码缩进、更好的阅读体验。

Null

Guava用Optional表示可能为null的T类型引用。

创建:Optional.of(T)不接受null Optional.fromNullable(T)接受null Optional.absent()

查询:isPresent() get() or(T)如果为null则为T orNull() 

其他:Objects.firstNonNull(T, T)用于给null指定默认值,如果两个都是null会抛NullPointerException

    emptyToNull(String)nullToEmpty(String)

前置条件

静态import:

import static com.google.common.base.Preconditions.checkNotNull;

用法:

checkArgument(i >= 0, "Argument was %s but expected nonnegative", i);
checkArgument(i < j, "Expected i < j, but %s > %s", i, j);

checkArgument(boolean) checkNotNull(T) checkState(boolean)

checkElementIndex(int index, int size) checkPositionIndexes(int start, int end, int size)

可内联使用:this.field = checkNotNull(field)

object方法

Objects.equals(a,b)可null的equals Objects.hash(Object...) 

toString():

// Returns "ClassName{x=1}"
Objects.toStringHelper(this).add("x", 1).toString();
// Returns "MyObject{x=1}"
Objects.toStringHelper("MyObject").add("x", 1).toString();

compare():

public int compareTo(Foo that) {
return ComparisonChain.start()
.compare(this.aString, that.aString)
.compare(this.anInt, that.anInt)
.compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())
.result();
}

排序

Ordering:Comparator的实现

构造:natural()自然序 usingToString()字典序 from(Comparator)

链式调用:reverse()逆序 nullsFirst() nullsLast() lexicographical() onResultOf(Function)

Ordering<Foo> ordering = Ordering.natural().nullsFirst().onResultOf(new Function<Foo, String>() {
public String apply(Foo foo) {
return foo.sortedBy;
}
});

集合和元素:greatestOf(Iterable iterable, int k) min(Iterable) min(E, E, E, E...) 

            isOrdered(Iterable) sortedCopy(Iterable)