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) 收藏 举报
浙公网安备 33010602011771号