Google的java工具类Guava

时间:2023-03-09 05:28:05
Google的java工具类Guava

前言

google开发java项目肯定也不想重复造*,所以肯定也有工具类,就是它了:Guava
我将举例几个实际的例子,发挥这个工具类好用的功能。更多的方法和功能,还有内部的实现可以直接参考https://github.com/google/guava

举例

ps:这边都以单个情况举例,如以map举例,那么List等都有类似的功能。

1、创建
原来你可能是这样的:

Map<String, Map<Long, List<String>>> map = new HashMap<String, Map<Long,List<String>>>();

现在你可以:

 Map<String, Map<Long, List<String>>> map = Maps.newHashMap(); 

2、初始化
原来你可能是这样的:

Map<String,String> map = new HashMap<>();
map.put("key1", "val1");
map.put("key2", "val2");

现在你可以:

Map<String,String> map = ImmutableMap.of("key1", "val1", "key2", "val2");

当然绝大多数情况下,这样的用法用于list较多,map这样的写法,可读性有点差,也多用于测试用例中。

3、比较
原来你可能是这样的:

int a = 1;
int b = 2;
int compareTo = Integer.valueOf(a).compareTo(Integer.valueOf(b));

现在你可以:

int compare = Ints.compare(a, b);

其他有Ints,Doubles,Floats,Shorts,Bytes以及Bools等工具类用于操作基本类型的数据很方便

4、list转String

List<Integer> list = listOf(1, 2, 3);
int[] arr = Ints.toArray(list);

5、字符比较分离

//判断字符a~z
CharMatcher charMatcher = CharMatcher.inRange('a', 'z').or(CharMatcher.inRange('A', 'Z'));
boolean result = charMatcher.matches('a');
System.out.println(result); //分离字符串并处理空格和空的情况
Iterable<String> split = Splitter.on(",")
.omitEmptyStrings()
.trimResults()
.split("1,,,2, 3, ,5"); for (String temp : split) {
System.out.println(temp);
}
//转小驼峰
tableName = CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, tableName);

6、一键多值的map

Multimap<String, String> multimap = ArrayListMultimap.create();
multimap.put("123", "123");
multimap.put("123", "124");
System.out.println(multimap.get("123"));
//[123, 124]

其他很多奇奇怪怪的功能在下面都有,上面只是抛砖引玉。

参考文档博客:
https://www.cnblogs.com/SummerinShire/p/6054983.html
https://blog.csdn.net/dgeek/article/details/76221746
http://ifeve.com/google-guava-collectionutilities/