【Java常用工具类汇总 2】Google核心库GUAVA(附代码示例)(1)

一、百度百科


Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,Guava 是Java的工具集,提供了一些常用的便利的操作工具类,减少因为空指针、异步操作等引起的问题BUG,提高开发效率。

二、字符串处理 Strings


常用方法如下:

  1. isNullOrEmpty:判断是否为空

  2. emptyToNull:空转null

  3. nullToEmpty:null转空

  4. commonPrefix:获取两个字符串相同的开头部分

  5. commonSuffix:获取两个字符串相同的结尾部分

  6. padStart:为达到固定长度,在字符串前端补全某字符

  7. padEnd:为达到固定长度,在字符串结尾补全某字符

  8. repeat:重复某字符串若干次,并拼接在一起

private static void StringsTest() {

//isNullOrEmpty:判断是否为空

System.out.println(Strings.isNullOrEmpty(“”));//true

System.out.println(Strings.isNullOrEmpty(null));//true

System.out.println(Strings.isNullOrEmpty(“zs”));//false

//emptyToNull:空转null

System.out.println(Strings.emptyToNull(“”)); //null

//nullToEmpty:null转空

System.out.println(Strings.nullToEmpty(“zs”));//zs

System.out.println(Strings.nullToEmpty(“”));//

System.out.println(Strings.nullToEmpty(null));//

//commonPrefix:获取两个字符串相同的开头部分

System.out.println(Strings.commonPrefix(“abcdefg”, “asdf”));//a

System.out.println(Strings.commonPrefix(“abcdefg”, “qwer”));//

System.out.println(Strings.commonPrefix(“abcdefg”, “abcf”));//abc

System.out.println(Strings.commonPrefix(“abcdefg”, “abc”));//abc

//commonSuffix:获取两个字符串相同的结尾部分

System.out.println(Strings.commonSuffix(“abcdefg”, “abcfg”));//fg

//padStart:为达到固定长度,在字符串前端补全某字符

System.out.println(Strings.padStart(“zs”, 1, ‘*’));//zs,需要注意,这里不会返回s

System.out.println(Strings.padStart(“zs”, 2, ‘*’));//zs

System.out.println(Strings.padStart(“zs”, 3, ‘*’));//*zs

//padEnd:为达到固定长度,在字符串结尾补全某字符

System.out.println(Strings.padEnd(“zs”, 1, ‘*’));//zs,需要注意,这里不会返回s

System.out.println(Strings.padEnd(“zs”, 2, ‘*’));//zs

System.out.println(Strings.padEnd(“zs”, 3, ''));//zs

//repeat:重复某字符串若干次,并拼接在一起

System.out.println(Strings.repeat(“zs”, 2));//zszs

System.out.println(Strings.repeat(“java”, 3));//javajavajava

}

三、连接器 Joiner


1、代码实例

用分隔符将多个字符串(或数组元素)连接成一个字符串。

常用方法如下:

  1. on:用符号分隔

  2. splitToList:分隔为list

  3. omitEmptyStrings:去掉分隔后的空格

  4. trimResults():去除每一行的空格

  5. trimResults(CharMatcher.JAVA_DIGIT):去掉每一行的数字

private static void test05() {

String str = “zs,ls, ww,gr”;

// 逗号分隔转为list

System.out.println(Splitter.on(“,”).splitToList(str));//[zs, , ls, ww, , , gr]

// 去掉分隔后的空格

System.out.println(Splitter.on(“,”).omitEmptyStrings().splitToList(str));//[zs, ls, ww, gr]

// 去除每一行的空格

System.out.println(Splitter.on(“,”).omitEmptyStrings().trimResults().splitToList(str));//[zs, ls, ww, gr]

String str2 = “zs,ls2, ww,zs”;

System.out.println(Splitter.on(“,”).omitEmptyStrings().trimResults().splitToList(str2));//[zs, ls2, ww, zs]

// 去掉每一行指定的字符

System.out.println(Splitter.on(“,”).omitEmptyStrings().trimResults(CharMatcher.javaDigit()).splitToList(str2));//[zs, ls, ww, zs]

// 既想去掉空格又想去掉数字,,,只去掉了数字

System.out.println(Splitter.on(“,”).omitEmptyStrings().trimResults().trimResults(CharMatcher.javaDigit()).splitToList(str2));//[zs, ls, ww, zs]

// 既想去掉空格又想去掉数字,,,只去掉了空格,,感觉trimResults不能连续使用,如果连续只会选择最后一个有效?

System.out.println(Splitter.on(“,”).omitEmptyStrings().trimResults(CharMatcher.javaDigit()).trimResults().splitToList(str2));//[zs, ls2, ww, zs]

/**

  • on :map item之间分隔符

withKeyValueSeparator:定义map项的分隔符

*/

//转为指定格式字符串

System.out.println(Joiner.on(“;”).withKeyValueSeparator(“=”).join(ImmutableMap.of(“id”, “1”, “name”, “zs”)));//id=1;name=zs

//指定格式字符串转为map

System.out.println(Splitter.on(“;”).withKeyValueSeparator(“=”).split(“id=1;name=zs”));//{id=1, name=zs}

}

2、连接器 Joiner 小测试

小练习:

需求:

①有一个[1, , 2, null, 3]

②按逗号分隔,并去掉null和""

private static List makeList() {

List list = new ArrayList();

list.add(“1”);

list.add(“”);

list.add(“2”);

list.add(null);

list.add(“3”);

return list;//[1, , 2, null, 3]

}

static String delimiter = “,”;

//循环方式

private static void test01() {

List list = makeList();

StringBuilder builder = new StringBuilder();

for(String str : list) {

if(StringUtils.isNotEmpty(str)) {

builder.append(str+delimiter);

}

}

System.out.println(builder);//1,2,3,

builder.setLength(builder.length() - delimiter.length());

System.out.println(builder);//1,2,3

}

//Java8 stream方式

private static void test02() {

List list = makeList();

System.out.println(list.stream().filter(x -> StringUtils.isNotEmpty(x)).collect(Collectors.joining(“,”)));//1,2,3

System.out.println(list.stream().filter(StringUtils::isNotEmpty).collect(Collectors.joining(“,”)));//1,2,3

}

//Guava Joiner

private static void test03() {

List list = makeList();

System.out.println(Joiner.on(“,”).join(list));//java.lang.NullPointerException

System.out.println(Joiner.on(“,”).join(list.stream().filter(StringUtils::isNotEmpty).collect(Collectors.toList())));//1,2,3

}

// java.lang

private static void test04() {

List list = makeList();

System.out.println(String.join(“,”, list.stream().filter(StringUtils::isNotEmpty).collect(Collectors.toList())));//1,2,3

}

四、CharMatcher


常用方法如下:

  1. javaDigit:数字

  2. javaLowerCase:小写

  3. javaUpperCase:大写

  4. whitespace:空格

  5. matches:匹配,返回Boolean

  6. removeFrom:移除指定类型

  7. retainFrom:除指定字符外全部移除

private static void test06() {
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结:绘上一张Kakfa架构思维大纲脑图(xmind)

image

其实关于Kafka,能问的问题实在是太多了,扒了几天,最终筛选出44问:基础篇17问、进阶篇15问、高级篇12问,个个直戳痛点,不知道如果你不着急看答案,又能答出几个呢?

若是对Kafka的知识还回忆不起来,不妨先看我手绘的知识总结脑图(xmind不能上传,文章里用的是图片版)进行整体架构的梳理

梳理了知识,刷完了面试,如若你还想进一步的深入学习解读kafka以及源码,那么接下来的这份《手写“kafka”》将会是个不错的选择。

  • Kafka入门

  • 为什么选择Kafka

  • Kafka的安装、管理和配置

  • Kafka的集群

  • 第一个Kafka程序

  • Kafka的生产者

  • Kafka的消费者

  • 深入理解Kafka

  • 可靠的数据传递

  • Spring和Kafka的整合

  • SpringBoot和Kafka的整合

  • Kafka实战之削峰填谷

  • 数据管道和流式处理(了解即可)

image

image

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • Kafka的安装、管理和配置

  • Kafka的集群

  • 第一个Kafka程序

  • Kafka的生产者

  • Kafka的消费者

  • 深入理解Kafka

  • 可靠的数据传递

  • Spring和Kafka的整合

  • SpringBoot和Kafka的整合

  • Kafka实战之削峰填谷

  • 数据管道和流式处理(了解即可)

[外链图片转存中…(img-gPBAjVf0-1713526952400)]

[外链图片转存中…(img-UMHqA7sj-1713526952401)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值