Guava 编程

Guava 编程,第1张

Guava 编程 系列文章目录

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


文章目录

系列文章目录前言一、导入依赖二、DEMO代码


前言

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


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

一、导入依赖
 
     com.google.guava
     guava
     ${guava.version}
 
 

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

二、DEMO代码
	//集合创建:
   Map> map = Maps.newHashMap();
   List>> list = Lists.newArrayList();

   //集合初始化:
   Set set = Sets.newHashSet("one","two","three");
   set.add("aaa");
   List 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 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 optional = Optional.of(1);
    optional.isPresent(); //true 有值true 为空false
    optional.get(); //1  获取结果
    
    
    Map map1 = Maps.newHashMap();
    map1.put("a","A");map1.put("b","B");map1.put("d","D");

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

    MapDifference 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 map3 = Maps.filterEntries(map1, x -> "a".equals(x.getKey()) && "A".equals(x.getValue()));
    // 比较key
    Map map4 = Maps.filterKeys(map1, x -> "b".equals(x));
    // 比较value
    Map map5 = Maps.filterValues(map1, x -> "b".equals(x));

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5706852.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存