今天给大家说一下 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]}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)