guava学习

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类。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值