JAVA全系列 教程
3762个小节阅读:7090.4k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Guava项目是 Google 公司开源的 Java 核心库,它主要是包含一些在 Java 开发中经常使用到的功能,如数据校验、不可变集合、计数集合,集合增强操作、I/O、缓存、字符串操作等。
guava github 开源地址:
https://github.com/google/guava
xxxxxxxxxx
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.1.2-jre</version>
<!-- or, for Android: -->
<version>32.1.2-android</version>
</dependency>
Strings是Guava提供的一组字符串工具,它提供了许多有用的方法来处理字符串。
Strings的主要方法:
isNullOrEmpty(String string)
:判断字符串是否为空或null。padEnd(String string, int minLength, char padChar)
:在字符串末尾填充指定字符,直到字符串达到指定长度。padStart(String string, int minLength, char padChar)
:在字符串开头填充指定字符,直到字符串达到指定长度。repeat(String string, int count)
:重复指定字符串指定次数。
Strings的使用示例:
xxxxxxxxxx
public class StringsDemo {
public static void main(String[] args) {
// 判断字符串是否为空或null
String str1 = null;
String str2 = "";
System.out.println(Strings.isNullOrEmpty(str1));
System.out.println(Strings.isNullOrEmpty(str2));
// 在字符串末尾填充指定字符,直到字符串达到指定长度
String str3 = "abc";
String paddedStr1 = Strings.padEnd(str3, 6, '*');
System.out.println(paddedStr1);
// 在字符串开头填充指定字符,直到字符串达到指定长度
String str4 = "abc";
String paddedStr2 = Strings.padStart(str4, 6, '*');
System.out.println(paddedStr2);
// 重复指定字符串指定次数
String str5 = "abc";
String repeatedStr = Strings.repeat(str5, 3);
System.out.println(repeatedStr);
}
Guava提供了一些非常有用的集合操作API。
不可变集合是Guava的一个重要特性,它可以确保集合不被修改,从而避免并发访问的问题。ImmutabelList是不可变List的实现,下面是一个示例代码:
xxxxxxxxxx
List<String> list = Lists.newArrayList("a", "b", "c");
ImmutableList<String> immutableList = ImmutableList.copyOf(list);
Iterables类提供了一些有用的方法来操作集合,如下所示:
xxxxxxxxxx
Iterable<String> iterable = Lists.newArrayList("a", "b", "c");
// 判断集合是否为空
boolean isEmpty = Iterables.isEmpty(iterable);
// 获取第一个元素,如果集合为空返回null
String first = Iterables.getFirst(iterable, null);
// 获取最后一个元素,如果集合为空返回null
String last = Iterables.getLast(iterable, null);
// 获取所有符合条件的元素
Iterable<String> filtered = Iterables.filter(iterable, new Predicate<String>() {
@Override
public boolean apply(String input) {
return input.startsWith("a");
}
});
Multimaps提供了一个非常有用的数据结构,它允许一个键对应多个值,下面是一个示例代码:
xxxxxxxxxx
ListMultimap<Integer, String> map = ArrayListMultimap.create();
map.put(1, "a");
map.put(1, "b");
map.put(2, "c");
List<String> values = map.get(1); // 返回[a, b]
Maps提供了一些有用的方法来操作Map,如下所示:
xxxxxxxxxx
Map<Integer, String> map = ImmutableMap.of(1, "a", 2, "b", 3, "c");
// 判断Map是否为空
boolean isEmpty = Maps.isEmpty(map);
// 获取Map中的所有键
Set<Integer> keys = map.keySet();
// 获取Map中的所有值
Collection<String> values = map.values();
// 获取Map中的所有键值对
Set<Map.Entry<Integer, String>> entries = map.entrySet();
// 根据键获取值,如果不存在则返回null
String value = Maps.getIfPresent(map, 1);
Preconditions是Guava提供的一组前置条件检查工具,它提供了一些检查参数是否符合预期的方法。
Preconditions的主要方法:
checkArgument(boolean expression, String errorMessageTemplate, Object... errorMessageArgs)
:检查参数是否符合预期,并抛出IllegalArgumentException异常,可以包含错误信息模板和占位符。checkNotNull(T reference, String errorMessageTemplate, Object... errorMessageArgs)
:检查参数是否为null,并抛出NullPointerException异常,可以包含错误信息模板和占位符。
Preconditions的使用示例:
xxxxxxxxxx
public class PreconditionsDemo {
public static void main(String[] args) {
// 检查参数是否符合预期,并抛出IllegalArgumentException异常,可以包含错误信息模板和占位符
String str1 = "abc";
Preconditions.checkArgument(str1.length() < 3, "字符串长度必须小于3");
// 检查参数是否为null,并抛出NullPointerException异常,可以包含错误信息模板和占位符
String str2 = null;
Preconditions.checkNotNull(str2, "字符串不能为空");
}