码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • guava工具类常用方法


    Guava是Google开发的一个Java开源工具类库,它提供了许多实用的工具类和功能,可以简化Java编程中的常见任务。

    引入依赖

    1. <dependency>
    2. <groupId>com.google.guava</groupId>
    3. <artifactId>guava</artifactId>
    4. <version>29.0-jre</version>
    5. </dependency>

    Joiner

    把集合或数组通过指定分隔符连接成字符串

    1. List a = new ArrayList<>();
    2. a.add("a");
    3. a.add("b");
    4. a.add("c");
    5. Joiner joiner = Joiner.on(",");
    6. System.out.println(joiner.join(a));// a,b,c
    7. a.add(null);
    8. // 忽略null
    9. Joiner joiner1 = Joiner.on(",").skipNulls();// a,b,c
    10. System.out.println(joiner1.join(a));
    11. Joiner joiner2 = Joiner.on(",").useForNull("替代");// a,b,c,替代
    12. System.out.println(joiner2.join(a));

    Splitter

    Splitter工具类将一个字符串按照逗号进行分割,并将分割后的结果存储在一个Iterable对象中

    1. String str="a,b,c";
    2. Splitter splitter = Splitter.on(",");
    3. Iterable iterable = splitter.split(str);
    4. System.out.println(iterable); // [a, b, c]
    5. str="a,b,,c";
    6. // omitEmptyStrings 过滤掉空白的字符串
    7. Splitter splitter1 = Splitter.on(",").omitEmptyStrings();
    8. Iterable iterable1 = splitter1.split(str);
    9. System.out.println(iterable1); // [a, b, c]
    10. str="a,b, c ";
    11. // trimResults 去除前后空格
    12. Splitter splitter2 = Splitter.on(",").trimResults();
    13. Iterable iterable2 = splitter2.split(str);
    14. System.out.println(iterable2); // [a, b, c]
    15. // 转为集合
    16. List splitToList = splitter2.splitToList(str);
    17. System.out.println(splitToList);

    下划线和驼峰互转

    1. String str="student_name";
    2. // 下划线转驼峰
    3. System.out.println(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, str)); //半驼峰 studentName
    4. System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, str)); //全驼峰 Student_name
    5. str="studentName";
    6. // 驼峰转下划线
    7. System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, str)); // student_name

    集合操作

    快速生成集合

    1. ArrayList stringArrayList = Lists.newArrayList("a", "b", "c");
    2. HashSet stringHashSet = Sets.newHashSet("a", "b", "c");

    集合分类

    大集合分裂成多个集合

    1. ArrayList stringArrayList = Lists.newArrayList("a", "b", "c");
    2. // 把stringArrayList分成小的集合,小的集合大小是2
    3. List> partition = Lists.partition(stringArrayList, 2);
    4. System.out.println(partition); // [[a, b], [c]]

    转集合

    基本类型转集合

    1. System.out.println(Ints.asList(1, 2, 3)); // [1, 2, 3]
    2. System.out.println(Longs.asList(1l, 2, 3)); // [1, 2, 3]
    3. System.out.println(Floats.asList(12.3f, 3.2f, 2.2f)); // [12.3, 3.2, 2.2]

    HashMultiset

     HashMultiset可以存储重复的元素,并且提供了方便的方法来统计每个元素的数量。它继承自AbstractMultiset类并实现了Serializable和Cloneable接口。

    1. HashMultiset multiset = HashMultiset.create();
    2. multiset.add("a");
    3. multiset.add("b");
    4. multiset.add("c");
    5. multiset.add("a");
    6. System.out.println(multiset); // [a x 2, b, c]
    7. Set> entries = multiset.entrySet();
    8. System.out.println(entries); // [a x 2, b, c]
    9. for (Multiset.Entry entry : entries) {
    10. System.out.println("元素:" + entry.getElement() + ",个数:" + entry.getCount());
    11. // 元素:a,个数:2
    12. // 元素:b,个数:1
    13. // 元素:c,个数:1
    14. }
    15. Set elementSet = multiset.elementSet();
    16. System.out.println(elementSet); // [a, b, c]
    17. for (String element : elementSet) {
    18. System.out.println("元素:" + element);
    19. // 元素:a
    20. // 元素:b
    21. // 元素:c
    22. }

    HashMultimap

    HashMultimap允许一个键对应多个值。它继承自AbstractMultimap类并实现了Serializable和Cloneable接口。

    1. HashMultimap multimap = HashMultimap.create();
    2. multimap.put("a","1");
    3. multimap.put("a","2");
    4. multimap.put("a","3");
    5. Collection values = multimap.get("a");
    6. System.out.println(values); // [1, 2, 3]
    7. // 是否包含key=a,value=1的entry
    8. System.out.println(multimap.containsEntry("a", "1"));
    9. Map> jkdMap = multimap.asMap(); // true
    10. System.out.println(jkdMap); // {a=[1, 2, 3]}

    ImmutableList

    ImmutableList是Guava库中的一个集合类,它是一个不可变的(immutable)列表,即一旦创建就不能被修改。与标准Java的List接口不同,ImmutableList的内容在创建后就不能被改变。它实现了List接口,并提供了一组只读的操作方法来访问列表中的元素。

    1. ImmutableList immutableList = ImmutableList.builder().add("a").build();
    2. // 报错 java.lang.UnsupportedOperationException
    3. // immutableList.add("b");
    4. // 原生jdk
    5. List list = new ArrayList<>();
    6. list.add("a");
    7. List jdkUnmodifiableList = Collections.unmodifiableList(list);
    8. // jdk原生同样报错 java.lang.UnsupportedOperationException
    9. // jdkUnmodifiableList.add("c");
    10. // 但是可以对list操作
    11. list.add("c");
    12. System.out.println(jdkUnmodifiableList); // [a, c]
    13. Preconditions

      Preconditions是Guava库中的一个工具类,用于在代码中进行前置条件的检查。它提供了一组静态方法,可以验证参数、状态或其他条件是否满足,并在不满足条件时抛出相应的异常。使用Preconditions可以增强代码的可读性和健壮性,有效地进行参数校验和错误处理。

      1. String str=null;
      2. // Preconditions.checkNotNull(str,"参数不能为空"); // NullPointerException: 参数不能为空
      3. Preconditions.checkArgument(str != null ,"参数不能为空"); // IllegalArgumentException: 参数不能为空

    14. 相关阅读:
      程序员常用的19款办公软件和开发工具推荐!
      【图像二值化】基于matlab C4.5决策树图像二值化【含Matlab源码 2225期】
      Unity中的协程
      小程序商品列表分页实现
      数字电路基础04(查找表LUT)
      https加密协议 https证书
      【NOI模拟赛】给国与时光鸡(构造)
      中秋节主题征文 | 那些不朽的描写月亮的诗词
      SQL查询语句的使用
      RDLC动态设置整个表格是否显示
    15. 原文地址:https://blog.csdn.net/qq_63431773/article/details/133579370
      • 最新文章
      • 攻防演习之三天拿下官网站群
        数据安全治理学习——前期安全规划和安全管理体系建设
        企业安全 | 企业内一次钓鱼演练准备过程
        内网渗透测试 | Kerberos协议及其部分攻击手法
        0day的产生 | 不懂代码的"代码审计"
        安装scrcpy-client模块av模块异常,环境问题解决方案
        leetcode hot100【LeetCode 279. 完全平方数】java实现
        OpenWrt下安装Mosquitto
        AnatoMask论文汇总
        【AI日记】24.11.01 LangChain、openai api和github copilot
      • 热门文章
      • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
        奉劝各位学弟学妹们,该打造你的技术影响力了!
        五年了,我在 CSDN 的两个一百万。
        Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
        面试官都震惊,你这网络基础可以啊!
        你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
        心情不好的时候,用 Python 画棵樱花树送给自己吧
        通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
        13 万字 C 语言从入门到精通保姆级教程2021 年版
        10行代码集2000张美女图,Python爬虫120例,再上征途
      Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
      正则表达式工具 cron表达式工具 密码生成工具

      京公网安备 11010502049817号