iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java Guava的使用技巧有哪些
  • 414
分享到

Java Guava的使用技巧有哪些

2023-07-05 19:07:07 414人浏览 薄情痞子
摘要

本文小编为大家详细介绍“Java Guava的使用技巧有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java Guava的使用技巧有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。G

本文小编为大家详细介绍“Java Guava的使用技巧有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java Guava的使用技巧有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Guava简介

Guava是Google发布的一个开源库,主要提供了一些在Java开发中非常有用的工具类和api,比如字符串处理、集合操作、函数式编程缓存等等。

字符串(Strings)

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):重复指定字符串指定次数。

  • commonPrefix(CharSequence a, CharSequence b):获取两个字符串的最长公共前缀。

  • commonSuffix(CharSequence a, CharSequence b):获取两个字符串的最长公共后缀。

以下是Strings的使用示例:

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);        // 获取两个字符串的最长公共前缀        String str6 = "abcdefg";        String str7 = "abcdxyz";        String commonPrefix = Strings.commonPrefix(str6, str7);        System.out.println(commonPrefix);        // 获取两个字符串的最长公共后缀        String str8 = "abcdefg";        String str9 = "xyzdefg";    String commonSuffix = Strings.commonSuffix(str8, str9);    System.out.println(commonSuffix);}

集合操作(Collections)

Guava提供了一些非常有用的集合操作API,如下所示:

ImmutableList

不可变集合是Guava的一个重要特性,它可以确保集合不被修改,从而避免并发访问的问题。ImmutabelList是不可变List的实现,下面是一个示例代码:

List<String> list = Lists.newArrayList("a", "b", "c");ImmutableList<String> immutableList = ImmutableList.copyOf(list);

Iterables

Iterables类提供了一些有用的方法来操作集合,如下所示:

Iterable<String> iterable = Lists.newArrayList("a", "b", "c");// 判断集合是否为空boolean isEmpty = Iterables.isEmpty(iterable);// 获取第一个元素,如果集合为空返回nullString first = Iterables.getFirst(iterable, null);// 获取最后一个元素,如果集合为空返回nullString last = Iterables.getLast(iterable, null);// 获取所有符合条件的元素Iterable<String> filtered = Iterables.filter(iterable, new Predicate<String>() {    @Override    public boolean apply(String input) {        return input.startsWith("a");    }});// 转换集合类型List<String> newList = Lists.newArrayList(Iterables.transfORM(iterable, new Function<String, String>() {    @Override    public String apply(String input) {        return input + input;    }}));

Multimaps

Multimaps提供了一个非常有用的数据结构,它允许一个键对应多个值,下面是一个示例代码:

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

Maps提供了一些有用的方法来操作Map,如下所示:

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();// 根据键获取值,如果不存在则返回nullString value = Maps.getIfPresent(map, 1);

条件检查(Preconditions)

Preconditions是Guava提供的一组前置条件检查工具,它提供了一些检查参数是否符合预期的方法。以下是Preconditions的主要方法:

  • checkArgument(boolean expression, String errorMessageTemplate, Object... errorMessageArgs):检查参数是否符合预期,并抛出IllegalArgumentException异常,可以包含错误信息模板和占位符。

  • checkNotNull(T reference, String errorMessageTemplate, Object... errorMessageArgs):检查参数是否为null,并抛出NullPointerException异常,可以包含错误信息模板和占位符。

  • checkState(boolean expression, String errorMessageTemplate, Object... errorMessageArgs):检查对象状态是否符合预期,并抛出IllegalStateException异常,可以包含错误信息模板和占位符。

  • checkElementIndex(int index, int size, String errorMessageTemplate, Object... errorMessageArgs):检查下标是否在集合的范围内,并抛出IndexOutOfBoundsException异常,可以包含错误信息模板和占位符。

  • checkPositionIndex(int index, int size, String errorMessageTemplate, Object... errorMessageArgs):检查下标是否在集合的范围内,可以等于集合的大小,并抛出IndexOutOfBoundsException异常,可以包含错误信息模板和占位符。

  • checkPositionIndexes(int start, int end, int size):检查开始下标和结束下标是否在集合的范围内,并抛出IndexOutOfBoundsException异常。

以下是Preconditions的使用示例:

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, "字符串不能为空");        // 检查对象状态是否符合预期,并抛出IllegalStateException异常,可以包含错误信息模板和占位符        boolean flag1 = false;        Preconditions.checkState(flag1, "状态不正确");        // 检查下标是否在集合的范围内,并抛出IndexOutOfBoundsException异常,可以包含错误信息模板和占位符        List<Integer> list1 = Lists.newArrayList(1, 2, 3, 4, 5);        Preconditions.checkElementIndex(6, list1.size(), "下标越界");        // 检查下标是否在集合的范围内,可以等于集合的大小,并抛出IndexOutOfBoundsException异常,可以包含错误信息模板和占位符        List<Integer> list2 = Lists.newArrayList(1, 2, 3, 4, 5);        Preconditions.checkPositionIndex(5, list2.size(), "下标越界");        // 检查开始下标和结束下标是否在集合的范围内,并抛出IndexOutOfBoundsException异常        List<Integer> list3 = Lists.newArrayList(1, 2, 3, 4, 5);        Preconditions.checkPositionIndexes(2, 6, list3.size());        // 可以在错误信息中使用占位符        int value1 = 101;        Preconditions.checkArgument(value1 <= 100, "值必须小于等于 %s", 100);        // 可以使用Supplier来避免计算开销        int value2 = 101;        Preconditions.checkArgument(value2 <= 100, () -> "值必须小于等于 " + 100);}

可以设置过期时间的本地缓存(CacheBuilder)

Cache是Guava提供的一个缓存工具类,它可以帮助我们在内存中缓存数据,提高程序的性能。以下是Cache的主要方法:

  • get(K key, Callable<? extends V> valueLoader):获取指定key的缓存值,如果缓存中没有,则调用valueLoader加载数据并存入缓存。

  • getIfPresent(Object key):获取指定key的缓存值,如果缓存中没有,则返回null。

  • getAllPresent(Iterable<?> keys):获取指定keys的缓存值,如果缓存中没有,则返回null。

  • put(K key, V value):将指定key的缓存值存入缓存。

  • putAll(Map<? extends K, ? extends V> m):将指定Map的缓存值存入缓存。

  • invalidate(Object key):将指定key的缓存值从缓存中删除。

  • invalidateAll(Iterable<?> keys):将指定keys的缓存值从缓存中删除。

  • invalidateAll():将所有缓存值从缓存中删除。

  • size():获取缓存中缓存值的数量。

  • asMap():将缓存转换成Map。

public class CacheDemo {    public static void main(String[] args) {        Cache<String, String> cache = CacheBuilder.newBuilder()                .maximumSize(100)                .expireAfterWrite(10, TimeUnit.MINUTES)                .build();        cache.put("key", "value");        String value = cache.getIfPresent("key");    }}

读到这里,这篇“Java Guava的使用技巧有哪些”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: Java Guava的使用技巧有哪些

本文链接: https://www.lsjlt.com/news/354536.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java Guava的使用技巧有哪些
    本文小编为大家详细介绍“Java Guava的使用技巧有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java Guava的使用技巧有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。G...
    99+
    2023-07-05
  • 有哪些使用Java的小技巧
    本篇内容介绍了“有哪些使用Java的小技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用stream实现list转map普通:对于lis...
    99+
    2023-06-15
  • 使用Vue.js的技巧有哪些
    小编给大家分享一下使用Vue.js的技巧有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!第一招:化繁为简的Watchers场...
    99+
    2024-04-02
  • iFrame的使用技巧有哪些
    这篇文章主要介绍“iFrame的使用技巧有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“iFrame的使用技巧有哪些”文章能帮助大家解决问题。   1.作为弹...
    99+
    2024-04-02
  • BootStrap的使用技巧有哪些
    使用Bootstrap进行网页开发时,可以采用以下几种技巧:1. 使用网格系统:Bootstrap提供了响应式的网格系统,可用于快速...
    99+
    2023-09-15
    BootStrap
  • JS的使用技巧有哪些
    今天小编给大家分享一下JS的使用技巧有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、数组乱序在使用需要某种程度的随机...
    99+
    2023-06-29
  • HTML的使用技巧有哪些
    本篇内容主要讲解“HTML的使用技巧有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML的使用技巧有哪些”吧!1、html---position/rel...
    99+
    2024-04-02
  • PS的使用技巧有哪些
    这篇文章主要介绍了PS的使用技巧有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PS的使用技巧有哪些文章都会有所收获,下面我们一起来看看吧。   1.Ctrl+滚轮缩放。...
    99+
    2024-04-02
  • Excel的使用技巧有哪些
    今天小编给大家分享一下Excel的使用技巧有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。01. 遇月末、季末、年末,重...
    99+
    2023-06-02
  • 使用Vim的技巧有哪些
    这篇文章主要介绍“使用Vim的技巧有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“使用Vim的技巧有哪些”文章能帮助大家解决问题。Vimtutor通常如何开始学习最好就是使用应用本身。我找到一个...
    99+
    2023-06-27
  • Pandas的使用技巧有哪些
    这篇文章主要介绍了Pandas的使用技巧有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Pandas的使用技巧有哪些文章都会有所收获,下面我们一起来看看吧。Pandas是一个强大的分析结构化数据的工具集;它...
    99+
    2023-06-27
  • Vue使用的技巧有哪些
    这篇文章主要介绍“Vue使用的技巧有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue使用的技巧有哪些”文章能帮助大家解决问题。1、将一个 prop 限制在一个类型的列表中使用 prop 定义...
    99+
    2023-06-30
  • Vue的使用技巧有哪些
    本篇内容介绍了“Vue的使用技巧有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 将一个 prop 限制在一个类型的列表中使用 pr...
    99+
    2023-06-29
  • 有哪些使用SSH的技巧
    本篇内容主要讲解“有哪些使用SSH的技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些使用SSH的技巧”吧!1. 多条连接共享如果你需要在多个窗口中打开到同一个服务器的连接,而不想每次都输...
    99+
    2023-06-12
  • MySQL的使用技巧有哪些
    这篇文章主要介绍“MySQL的使用技巧有哪些”,在日常操作中,相信很多人在MySQL的使用技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL的使用技巧有哪些”...
    99+
    2024-04-02
  • 使用CSS的技巧有哪些
    本篇内容介绍了“使用CSS的技巧有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.box-sizin...
    99+
    2024-04-02
  • ChatGPT的使用技巧有哪些
    本文小编为大家详细介绍“ChatGPT的使用技巧有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“ChatGPT的使用技巧有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。...
    99+
    2023-02-20
    chatgpt
  • JavaScript的使用技巧有哪些
    今天小编给大家分享一下JavaScript的使用技巧有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、过滤唯一值Set...
    99+
    2023-07-02
  • VSCode的使用技巧有哪些
    本篇内容主要讲解“VSCode的使用技巧有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VSCode的使用技巧有哪些”吧!1. 查看日志步骤1. 执行Ctrl+Shift+P步骤2. 搜 s...
    99+
    2023-06-25
  • ES6的使用技巧有哪些
    这篇文章主要介绍“ES6的使用技巧有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ES6的使用技巧有哪些”文章能帮助大家解决问题。前言:ECMAScript 6(简称ES6)是于201...
    99+
    2023-07-01
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作