Preconditions
用来进行参数的检查,方法失败则抛出NullPointException或 IndexOutOfBoundsException 或IllegalArgumentException异常。
有三个方法:
Preconditions.checkElementIndex(1, 1); //检查数组越界
Preconditions.checkArgument(1>2); //取决于传入的Boolean表达式
Preconditions.checkNotNull(null); //检查参数是否为空
Joiner
/*
on():指定分隔符来分割字符串
limit():当分割的子字符串达到了limit个时则停止分割
fixedLength():根据长度来拆分字符串
trimResults():去掉子串中的空格
omitEmptyStrings():去掉空的子串
withKeyValueSeparator():要分割的字符串中key和value间的分隔符,分割后的子串中key和value间的分隔符默认是=
*/
System.out.println(Splitter.on(",").limit(3).trimResults().split(" a, b, c, d"));//[ a, b, c,d]
System.out.println(Splitter.fixedLength(3).split("1 2 3"));//[1 2, 3]
System.out.println(Splitter.on(" ").omitEmptyStrings().splitToList("1 2 3"));
System.out.println(Splitter.on(",").omitEmptyStrings().split("1,,,,2,,,3"));//[1, 2, 3]
System.out.println(Splitter.on(" ").trimResults().split("1 2 3")); //[1, 2, 3],默认的连接符是,
System.out.println(Splitter.on(";").withKeyValueSeparator(":").split("a:1;b:2;c:3"));//{a=1, b=2, c=3}
Joiner 提供了各种方法来处理字符串加入操作,对象等。
Joiner的实例不可变的,因此是线程安全的。通过源码可以看到,joiner的每个设置方法都是返回一个新的对象。对于以下方法是错误的。原来的对象joiner并没有被修改,返回的是一个新对象。
Joiner joiner = Joiner.on("_");
joiner.skipNulls(); //返回的是新的对象,和原来的没有任何关系。
Joiner joiner1 = Joiner.on("_").skipNulls(); //on 方法用来设置分隔符,skipNulls设置是否跳过null
Joiner joiner2 = Joiner.on("_").useForNull("hh"); //useForNull 当为空时的默认值
joiner1.join("1","2"); //join方法设置要分割的元素,可以是Inteator接口的实现类,或者是不定参数
Map<String,String> map=new HashMap<>();
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");
System.out.println(Joiner.on(",").withKeyValueSeparator("=").join(map)); //withKeyValueSeparator可以返回一个可以分割map类型的joiner,参数是key与value的分割字符
System.out.println(Joiner.on(",").appendTo(new StringBuilder("jjjj"), list.iterator())); //appendTo支持我们将分割好的字符拼接到StringBuilder对象之后
Splitter
splitter则于Joiner相反,是将字符串拆分,也是不可变类。
/*
on():指定分隔符来分割字符串
limit():当分割的子字符串达到了limit个时则停止分割
fixedLength():根据长度来拆分字符串
trimResults():去掉子串中的空格
omitEmptyStrings():去掉空的子串
withKeyValueSeparator():要分割的字符串中key和value间的分隔符,分割后的子串中key和value间的分隔符默认是=
*/
System.out.println(Splitter.on(",").limit(3).trimResults().split(" a, b, c, d"));//[ a, b, c,d]
System.out.println(Splitter.fixedLength(3).split("1 2 3"));//[1 2, 3]
System.out.println(Splitter.on(" ").omitEmptyStrings().splitToList("1 2 3"));
System.out.println(Splitter.on(",").omitEmptyStrings().split("1,,,,2,,,3"));//[1, 2, 3]
System.out.println(Splitter.on(" ").trimResults().split("1 2 3")); //[1, 2, 3],默认的连接符是,
System.out.println(Splitter.on(";").withKeyValueSeparator(":").split("a:1;b:2;c:3"));//{a=1, b=2, c=3}
Objects
推荐使用Java自带的Objects类。
Objects.compare(, , ); //使用自定义比较器进行比较
Objects.equals(, ); //对象是否相等
Objects.isNull();
Objects.requireNonNull(); //对象不为null返回,否则抛出空指针
Objects.hashCode();
Objects.hash();
Objects.toString();
Objects.nonNull();
Objects.deepEquals(, )
集合操作:
可以生成list,set,map。也可以对集合进行交集,并集,差集等操作。
Lists.newArrayList(1,2,3,4); //生产list
HashSet<Integer> set1 = Sets.newHashSet(1,2,3,4,5,6); //生产set
HashSet<Integer> set2 = Sets.newHashSet(1,2,3,4,5,7,8);
System.out.println(Sets.intersection(set1, set2)); //进行交集操作
System.out.println(Sets.difference(set1, set2)); //进行差集操作
System.out.println(Sets.union(set1, set2)); //进行并集操作
guava 使用 MutilMap1 来代替这种结构 :Map<K, List<V>> ,我们只需往里添加元素即可。
Multimap<String, String> multimap = ArrayListMultimap.create();
public void addBlogPost(final String name, final String source) {
multimap.put(name, source)
}
文件操作
files类。