IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Guava库使用 -> 正文阅读

[开发测试]Guava库使用

今天听同事说到google的Java工具库Guava非常好用,有很多操作list和map的快捷方法。所以就来学习记录一下。

  • Joiner

静态初始化方法,创建list时指定初始值

List<String> list1 = Lists.newArrayList("1", "2", "3");
 //传入集合
List<String> list2 = Lists.newArrayList(list1);

将list字符串集合,以,形式转为字符串

List<String> list =new ArrayList<String>();
list.add("xx");
list.add("zz");
list.add("dd");

//Joiner.on(",")获得Joiner实例对象
String joiner =  Joiner.on(",").join(list);
//输出结果:xx,zz,dd

跳过null值连接

 list.add(null);
 list.add("小小");
 //skipNulls()代表去除null
 String str3=Joiner.on(",").skipNulls().join(list);
 System.out.println(str3);
 //输出:xx,zz,dd,小小
 
//替换null值进行连接
String str4=Joiner.on(",").useForNull("空").join(list);
System.out.println(str4);
//输出:xx,zz,dd,空,小小

Map的键值对打印出来

   Map<String, String> map = new HashMap<>();
   map.put("key1", "value1");
   map.put("key2", "value2");
   map.put("key3", "value3");
   Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("=");
   System.out.println(mapJoiner.join(map));
   //输出:key1=value1,key2=value2,key3=value3  
  • Splitter

1、拆分字符串为List集合

String str="小小,妈妈,爸爸,爷爷,奶奶";
Splitter splitter =Splitter.on(",");
List<String> list=splitter.splitToList(str);
System.out.println(list);
//输出:[小小, 妈妈, 爸爸, 爷爷, 奶奶]

2、忽略空字符

String str1="a,b,c,d,,f,g";
//omitEmptyStrings()代表去除空字符串
List<String> list1=Splitter.on(",").omitEmptyStrings().splitToList(str1);
System.out.println(list1);
//输出:[a, b, c, d, f, g]

3、忽略空字符且去除字符串前后空格

String str2="a,b,c,d,,f,  g  ";
List<String> list2=Splitter.on(",").omitEmptyStrings().trimResults().splitToList(str2);
System.out.println(list2);
//输出:[a, b, c, d, f, g]
  • Strings

//1、补右全(Strings.padEnd方法)

String a="12345";
String b=Strings.padEnd(a, 10, 'x');
System.out.println(b);
//输出:12345xxxxx

//2、补左全(Strings.padStart)

String c=Strings.padStart(a, 10, 'x');
System.out.println(c);
//输出:xxxxx12345

//6、重复字符串(Strings.repeat)

String o="123";
String p=Strings.repeat(o, 3);
System.out.println(p);
//输出:123123123

//7、获取a,b左公共部分字符串(左边第一个公共部分)

String r="abcdsfsfs";
String s="accdc3sfsd";
String t=Strings.commonPrefix(r, s);
System.out.println(t);
//输出:a

//8、获取a,b右公共部分字符串

String w="faaxyz";
String x="fwefxyz";
String z=Strings.commonSuffix(w, x);
System.out.println(z);
//输出:xyz
  • Multimap:一对多Map

前段时间写业务的时候刚好遇到,一个二级分类要对应好几个三级分类信息。
采用的方法的是map<string,List>,这样会使代码变得冗长,而且每个object都要判断List存不存在,不存在需要new一个。
有了Multimap后就可以直接用。例子如下:

 Multimap<String,String> multimap = ArrayListMultimap.create();

 multimap.put("lower", "a");
 multimap.put("lower", "b");
 multimap.put("lower", "c");
 
List<String> lowerList = (List<String>)multimap.get("lower");
  • 双向查找的Map:BiMap

业务场景:必然从用户名查email,反过来又想通过email查用户名。
使用方法:

        HashBiMap<String,String> upperToLower = HashBiMap.create();
        upperToLower.put("A","a");
        upperToLower.put("B","b");
        upperToLower.put("C","c");
        //upperToLower.put("D","d");会丢出IllegalArgumentException, 需要用forceput
        upperToLower.forcePut("D","c");

        //用key获取value
        System.out.println(upperToLower.get("D"));  //c

        //用value获取key
        BiMap<String, String> lowerToUpper = upperToLower.inverse();
        System.out.println(lowerToUpper.get("c"));  //D

        //获取Collection视图
        Set<String> valuesSet = lowerToUpper.values();

        //将map放入BiMap中
        Map<String, String> map = new HashMap<>();
        map.put("A","x");
//        map.put("B","x");   //报错IllegalArgumentException
        upperToLower.putAll(map);   // 并不会重复,但会覆盖,map中value值不能重复
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:24:13  更:2022-04-01 00:25:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:44:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码