• Guava常用方法


    目录

    一、数学和数值操作

    二、并发库

    三、缓存

     四、集合

     五、I/O 与文件操作

     六、网络

     七、时间处理

     八、事件总线

    九、反射

     十、范围和集合操作

     十一、随机数和测试

     十二、注解处理

     十三、比较器和排序

     十四、哈希和散列


    • Guava 是 Google 开源的一个 Java 工具库,它提供了很多 Java 标准库中没有的便利工具和功能。上面的代码示例已经涵盖了 Guava 的一些核心功能,但 Guava 库的用途远不止这些。以下是一些其他的 Guava 特性和组件,可以作为补充:

    一、数学和数值操作


    • IntsLongsDoubles 等类提供了对基本数值类型的操作,如比较器、排序、最小最大值等。
    1. // 代码如下
    2. import com.google.common.primitives.Ints;
    3. // 使用 Ints 类获取最小值
    4. int min = Ints.min(1, 3, 2);
    5. System.out.println("Min value: " + min); // 输出: 1

    二、并发库


    • AbstractFuture 和 ListenableFuture 等类提供了对异步编程的支持。
    • RateLimiter 类用于控制对资源的访问速率。
    1. // 代码如下
    2. import com.google.common.util.concurrent.RateLimiter;
    3. // 创建一个速率限制器
    4. RateLimiter rateLimiter = RateLimiter.create(1.0); // 每秒一个操作
    5. rateLimiter.acquire(); // 请求一个操作

    三、缓存


    • CacheBuilder 不仅可以创建简单的缓存,还可以实现复杂的缓存策略,如自动过期、软引用和弱引用缓存等。
    1. // 代码如下
    2. import com.google.common.cache.CacheBuilder;
    3. import com.google.common.cache.CacheLoader;
    4. import com.google.common.cache.LoadingCache;
    5. LoadingCache cache = CacheBuilder.newBuilder()
    6. .maximumSize(100)
    7. .build(CacheLoader.from(key -> {
    8. // 模拟数据库查询
    9. return "Value for " + key;
    10. }));
    11. String value = cache.get("key1"); // 从缓存获取,或者执行加载逻辑

     四、集合


    • MultisetMultimapBiMap 等类提供了对集合的扩展,支持多值映射和双向映射。
    • Table 类提供了一种存储和操作二维数据的方式。
    1. // 代码如下
    2. import com.google.common.collect.BiMap;
    3. import com.google.common.collect.HashBiMap;
    4. // 创建双向映射
    5. BiMap map = HashBiMap.create();
    6. map.put("one", 1);
    7. map.put("two", 2);
    8. Integer value = map.get("one"); // 获取值
    9. String key = map.inverse().get(2); // 通过值获取键

     五、I/O 与文件操作


    • Files 类提供了文件读写、文件属性获取等操作。
    • ByteSourceCharSource 等类提供了对字节和字符流的操作。
    1. // 代码如下
    2. import com.google.common.io.Resources;
    3. // 读取网络资源
    4. String content = Resources.toString(
    5. Resources.getResource("http://example.com/file.txt"),
    6. Charsets.UTF_8
    7. );

     六、网络

    • HttpTransport 和 UrlFetch 类提供了对 HTTP 请求的支持。
    1. // 代码如下
    2. import com.google.common.net.HttpTransportFactory;
    3. // 使用 UrlFetch 进行 HTTP 请求
    4. String url = "http://example.com";
    5. String response = HttpTransportFactory.create().fetch(url).execute().parseAsString();

     七、时间处理


    • Stopwatch 类用于测量代码段的执行时间。
    • TimeLimiter 类可以对操作设置时间限制。
    1. // 代码如下
    2. import com.google.common.base.Stopwatch;
    3. // 使用 Stopwatch 测量时间
    4. Stopwatch stopwatch = Stopwatch.createStarted();
    5. // 执行一些操作...
    6. stopwatch.stop();
    7. System.out.println("Elapsed time: " + stopwatch.elapsed());

     八、事件总线


    • EventBus 类支持发布-订阅模式的事件处理。
    1. // 代码如下
    2. import com.google.common.eventbus.EventBus;
    3. // 创建事件总线并发布事件
    4. EventBus eventBus = new EventBus();
    5. eventBus.post("Event message");

    九、反射

    • ClassPath 类用于扫描类路径下的类和资源。
    1. // 代码如下
    2. import com.google.common.reflect.ClassPath;
    3. // 扫描类路径下的类
    4. ClassPath classPath = ClassPath.from(getClassLoader());
    5. ImmutableSet allClasses = classPath.getAllClasses();

     十、范围和集合操作

    • Range 类用于表示和操作有序值的范围。
    • Iterables 和 Collections2 类提供了一系列静态方法来增强集合的操作。

    1. // 代码如下
    2. import com.google.common.collect.Range;
    3. // 使用 Range 表示范围
    4. Range range = Range.closed(1, 5);
    5. boolean contains = range.contains(3); // 检查是否包含某个值

     十一、随机数和测试

    • Randoms 类提供生成随机数的方法。
    • MoreAsserts 类提供额外的断言方法,用于测试。

    1. // 代码如下
    2. import com.google.common.reflect.TypeToken;
    3. import java.lang.reflect.Type;
    4. // 使用 TypeToken 处理泛型类型
    5. Type type = new TypeToken>(){}.getType();

     十二、注解处理

    • Annotations 类提供对注解的操作。

    1. // 代码如下
    2. import com.google.common.reflect.TypeToken;
    3. import java.lang.reflect.Type;
    4. // 使用 TypeToken 处理泛型类型
    5. Type type = new TypeToken>(){}.getType();

     十三、比较器和排序

    • Ordering 类提供灵活的比较器和排序功能。

    1. // 代码如下
    2. import com.google.common.collect.Ordering;
    3. // 使用 Ordering 进行排序
    4. List list = Arrays.asList("Alice", "Bob", "Charlie");
    5. Ordering naturalOrder = Ordering.natural();
    6. List sortedList = naturalOrder.sortedCopy(list);

     十四、哈希和散列

    • Hash 类提供哈希相关的操作。

    1. // 代码如下
    2. import com.google.common.hash.HashFunction;
    3. import com.google.common.hash.Hashing;
    4. // 使用 HashFunction 进行哈希计算
    5. HashFunction hashFunction = Hashing.murmur3_32();
    6. String string = "hello";
    7. HashCode hashCode = hashFunction.hashString(string, Charsets.UTF_8);

     

  • 相关阅读:
    ABP +VUE Elment 通用高级查询(右键菜单)设计+LINQ通用类Expression<Func<TFields, bool>>方法
    Fiddler抓包原理和使用详解
    代码随想录算法训练营|五十七天
    短视频剪辑:如何批量调整播放倍速,轻松掌控节奏?
    Zebec Protocol 成非洲利比亚展会合作伙伴,并将向第三世界国家布局
    Java项目:ssm课程在线学习与测试系统
    APM(应用性能监控)中,average、95percentile和99percentile分别代表以下含义
    Nginx三大常用功能“反向代理,负载均衡,动静分离”
    Android 系统中适配OAID获取
    spring boot + feign + Hystrix 整合 (亲测有效)
  • 原文地址:https://blog.csdn.net/weixin_45035342/article/details/139358773