guava入门学习1(基础工具使用)

静态方法创建 Optional
Optional.of(T) 返回Optional对象,若引用缺失返回NullPointerException;
Optional.absent() 返回引用缺失的Optional对象,不报NullPointerException;
Optional.fromNullable(T)若引用缺失,返回Optional内absent对象,若引用不缺失,则返回of创建的引用不缺失Optional;

Preconditions
非静态Optional方法
get() 返回Optional对象里包含的实际引用对象,若对象引用缺失,抛出IllegalStateException异常;
isPresent()判断Optional对象里的引用是否缺失,存在即返回true;
or(T)若引用存在,返回引用;若引用缺失返回T引用;
orNull()若引用存在则返回引用,若引用缺失返回null;
asSet()返回一个集合,若引用缺失,返回空集合,否则为单例集合;

静态check检查方法
checkArgumen(boolean)检查判断,通用检查,返回IllegalArgumentException异常;
checkState(boolean)检查判断,状态检查,返回IllegalStateException异常;
checkNotNull(T)检查是否为空;
checkElementIndex(int index, int size)检查数组是否越界,越界返回IndexOutOfBoundsException异常;
checkPositionIndexs(int start, int end,int size)检查区间范围合法性(0到size大小,包括0,包括size,且start<end),非法返回IndexOutOfBoundsException异常;

ComparisonChain链式比较器
public class Person implements Comparable<Person> {
 
    private String userName;
    private int age;
 
    public Person(String userName, int age) {
        this.userName = userName;
        this.age = age;
    }
 
    @Override
    public int compareTo(Person o) {
        return ComparisonChain.start()
                .compare(this.userName,o.userName)
                .compare(this.age,o.age)
                .result();
    }
 
    public static void main(String[] args) {
        Person p1 = new Person("b",13);
        Person p2 = new Person("b",13);
        int i = p1.compareTo(p2);
        System.out.println(i);
    }
}

 

将本对象已参数对象做比较,直到比较到第一个不相等的位置为止

Ordering组件比较器
public class Person{
 
    private String userName;
    private int age;
 
    public Person(String userName, int age) {
        this.userName = userName;
        this.age = age;
    }
 
    @Override
    public String toString() {
        return "Person{" +
                "userName='" + userName + '\'' +
                ", age=" + age +
                '}';
    }
 
    public static void main(String[] args) {
        Person p1 = new Person("c",12);
        Person p2 = new Person("e",13);
        Ordering<Person>  ordering = Ordering.natural().nullsFirst().onResultOf(new Function<Person, Comparable>() {
            @Nullable
            @Override
            public Comparable apply(@Nullable Person input) {
                return input.userName;
            }
        });
        //按比较器比较特定字段
        int compare = ordering.compare(p1, p2);
        System.out.println(compare);
       
        //按找比较器规则获得集合中的对象元素
        List<Person> personList = new ArrayList<>();
        personList.add(p1);
        personList.add(p2);
        Person max = ordering.max(personList);
        System.out.println(max);
 
    }
}

 
 
 
 

posted on 2017-11-12 19:12  听风tingfeng  阅读(248)  评论(0)    收藏  举报

导航