Guava 编程

系列文章目录

今天给大家说一下 Google 开源的 Guava 工具库 , 该工具库非常强大,能简化我们的开发。



前言

提示:编写代码的过程中,总会遇到一些字符串的拼接,Map、List、set集合的遍历,过滤,组装等,自己实现代码看起来就会很冗余,而且还会出现bug,这时候我们可以借用一些工具来帮助我们实现。下面是我总结的常用的一些方法


提示:以下是本篇文章正文内容,下面案例可供参考

一、导入依赖

 <dependency>
     <groupId>com.google.guava</groupId>
     <artifactId>guava</artifactId>
     <version>${guava.version}</version>
 </dependency>
 <!--guava 版本地址:https://mvnrepository.com/artifact/com.google.guava/guava-->

示例:Guava 是 Google 开源的 工具库

二、DEMO代码

	//集合创建:
   Map<String, Map<String, String>> map = Maps.newHashMap();
   List<List<Map<String, String>>> list = Lists.newArrayList();

   //集合初始化:
   Set<String> set = Sets.newHashSet("one","two","three");
   set.add("aaa");
   List<String> lists = Lists.newArrayList("a","b","c");

   //分割字符串
   String s = " adsf, sd,    fa ,,fa, sd, fasld,fa ";
   Splitter splitter = Splitter.on(",")
           .omitEmptyStrings()// 跳过空值
           .trimResults();     //去除字符前后空格   
   System.out.println(splitter.split(s).toString());//[adsf, sd, fa, fa, sd, fasld, fa]
   Lists.newArrayList(splitter.split(s));  //Iterable 转 list
   

   //Splitter 通过正则表达式分割字符串
   Splitter.onPattern("\\s+").split("1 \t   2 3");//[1,2,3]
   //拼接
   //跳过null值
   String value = Joiner.on("-").skipNulls().join(lists);//a-b-c

   //表明你想匹配的一个确定的字符。
   boolean b = CharMatcher.is('a').matchesAllOf("aaa"); //true

   int count = CharMatcher.is('b').countIn("ababa");//总共出现的次数 2
   int i = CharMatcher.is('b').indexIn("ababa");//第一次出现目标字符的位置 1
   int in = CharMatcher.is('b').lastIndexIn("ababa");//最后一次出现目标字符的位置 3
   String s1 = CharMatcher.anyOf("ab").removeFrom("ababac");//移除指定字符串c


   String join = Ints.join(",", 1, 2, 4);
   System.out.println(join);//1,2,4

   int[] concat = Ints.concat(new int[]{1, 2}, new int[]{2, 3});
   System.out.println(concat.length);//注意这是拼接不会去重

   List<Integer> integers = Lists.newArrayList(1,2,4);
   int[] ints = Ints.toArray(integers); // 集合转数组

   int max = Ints.max(ints);// 获取数组最大值 最小值 Ints.min(ints)
   boolean contains = Ints.contains(ints, 2);// 是否包含
   
	// 避免空值 jdk8以上也有该工具类
    Optional<Integer> optional = Optional.of(1);
    optional.isPresent(); //true 有值true 为空false
    optional.get(); //1  获取结果
    
    /**
     * 比较两个map集合
     */
    Map<String,Object> map1 = Maps.newHashMap();
    map1.put("a","A");map1.put("b","B");map1.put("d","D");

    Map<String,Object> map2 = Maps.newHashMap();
    map2.put("a","A1");map2.put("c","C");map2.put("d","D");

    MapDifference<String, Object> difference = Maps.difference(map1, map2);

    //返回key相等 value不相等的
    System.out.println(difference.entriesDiffering());  // 输出: {a=(A, A1)}
    // 返回key和value都相等的
    System.out.println(difference.entriesInCommon());  // 输出: {d=D}
    // 返回只在map1(第一个入参)中出现的key
    System.out.println(difference.entriesOnlyOnLeft());  // 输出: {b=B}
    // 返回只在map2(第二个入参)中出现的key
    System.out.println(difference.entriesOnlyOnRight());  // 输出: {c=C}

    // map 过滤
    // 可以同时比较key和value
    Map<String, Object> map3 = Maps.filterEntries(map1, x -> "a".equals(x.getKey()) && "A".equals(x.getValue()));
    // 比较key
    Map<String, Object> map4 = Maps.filterKeys(map1, x -> "b".equals(x));
    // 比较value
    Map<String, Object> map5 = Maps.filterValues(map1, x -> "b".equals(x));

    //一键多值的Map
    //ArrayListMultimap HashMultimap LinkedListMultimap ....
    Multimap<String, String> multimap = ArrayListMultimap.create();
    multimap.putAll("a",Lists.newArrayList("A","C"));
    System.out.println(multimap);// {a=[A, C]}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值