当前位置: 首页 > news >正文

guava工具类常用方法

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

引入依赖

 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>29.0-jre</version>
</dependency>

Joiner

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

        List<String> a = new ArrayList<>();a.add("a");a.add("b");a.add("c");Joiner joiner = Joiner.on(",");System.out.println(joiner.join(a));// a,b,ca.add(null);// 忽略nullJoiner joiner1 = Joiner.on(",").skipNulls();// a,b,cSystem.out.println(joiner1.join(a));Joiner joiner2 = Joiner.on(",").useForNull("替代");// a,b,c,替代System.out.println(joiner2.join(a));

Splitter

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

        String str="a,b,c";Splitter splitter = Splitter.on(",");Iterable<String> iterable = splitter.split(str);System.out.println(iterable); // [a, b, c]str="a,b,,c";// omitEmptyStrings 过滤掉空白的字符串Splitter splitter1 = Splitter.on(",").omitEmptyStrings();Iterable<String> iterable1 = splitter1.split(str);System.out.println(iterable1); // [a, b, c]str="a,b, c ";// trimResults 去除前后空格Splitter splitter2 = Splitter.on(",").trimResults();Iterable<String> iterable2 = splitter2.split(str);System.out.println(iterable2); // [a, b, c]// 转为集合List<String> splitToList = splitter2.splitToList(str);System.out.println(splitToList);

下划线和驼峰互转

        String str="student_name";// 下划线转驼峰System.out.println(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, str)); //半驼峰 studentNameSystem.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, str)); //全驼峰 Student_namestr="studentName";// 驼峰转下划线System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, str)); // student_name

集合操作

快速生成集合

        ArrayList<String> stringArrayList = Lists.newArrayList("a", "b", "c");HashSet<String> stringHashSet = Sets.newHashSet("a", "b", "c");

集合分类

大集合分裂成多个集合

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

转集合

基本类型转集合

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

HashMultiset

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

        HashMultiset<String> multiset = HashMultiset.create();multiset.add("a");multiset.add("b");multiset.add("c");multiset.add("a");System.out.println(multiset); // [a x 2, b, c]Set<Multiset.Entry<String>> entries = multiset.entrySet();System.out.println(entries); // [a x 2, b, c]for (Multiset.Entry<String> entry : entries) {System.out.println("元素:" + entry.getElement() + ",个数:" + entry.getCount());// 元素:a,个数:2// 元素:b,个数:1// 元素:c,个数:1}Set<String> elementSet = multiset.elementSet();System.out.println(elementSet); // [a, b, c]for (String element : elementSet) {System.out.println("元素:" + element);// 元素:a// 元素:b// 元素:c}

HashMultimap

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

        HashMultimap<String, String> multimap = HashMultimap.create();multimap.put("a","1");multimap.put("a","2");multimap.put("a","3");Collection<String> values = multimap.get("a");System.out.println(values); // [1, 2, 3]// 是否包含key=a,value=1的entrySystem.out.println(multimap.containsEntry("a", "1"));Map<String, Collection<String>> jkdMap = multimap.asMap(); // trueSystem.out.println(jkdMap); // {a=[1, 2, 3]}

ImmutableList

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

        ImmutableList<Object> immutableList = ImmutableList.builder().add("a").build();// 报错 java.lang.UnsupportedOperationException
//        immutableList.add("b");// 原生jdkList<String> list = new ArrayList<>();list.add("a");List<String> jdkUnmodifiableList = Collections.unmodifiableList(list);// jdk原生同样报错 java.lang.UnsupportedOperationException
//        jdkUnmodifiableList.add("c");// 但是可以对list操作list.add("c");System.out.println(jdkUnmodifiableList); // [a, c]

Preconditions

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

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

http://www.lryc.cn/news/183229.html

相关文章:

  • CSShas伪类选择器案例附注释
  • nodejs+vue中医体质的社区居民健康管理系统elementui
  • Kotlin中reified 关键字
  • Linux命令(95)之alias
  • DHCPsnooping 配置实验(2)
  • Qt 综合练习小项目--反金币(2/2)
  • 安装matplotlib__pygame,以pycharm调入模块
  • 编写可扩展的软件:架构和设计原则
  • 算法-排序算法
  • Android_Monkey_测试执行策略及标准
  • windows安装nginx
  • Java日期的学习篇
  • spark on hive
  • Linux Vi编辑器基础操作指南
  • WEB3 创建React前端Dapp环境并整合solidity项目,融合项目结构便捷前端拿取合约 Abi
  • rust运算
  • 游戏引擎,脚本管理模块
  • 2023年7月工作经历三
  • 1801_codesys产品主样本了解
  • flink的计时器
  • @SpringBootApplication剖析
  • 浅谈wor2vec,RNN,LSTM,Transfermer之间的关系
  • 【11】c++设计模式——>单例模式
  • 深度学习-卷积神经网络-AlexNET
  • 人机关系不是物理关系也不是数理关系
  • <html dir=ltr>是什么意思?
  • 工厂模式:简化对象创建的设计思想 (设计模式 四)
  • 【2023最新】微信小程序中微信授权登录功能和退出登录功能实现讲解
  • 复习 --- C++运算符重载
  • 复习 --- select并发服务器