1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Guava-Joiner工具类

Guava-Joiner工具类

时间:2022-05-17 07:52:08

相关推荐

Guava-Joiner工具类

Guava是Google开源的一款工具类库,可以更方便的处理字符串、集合、文件、缓存等方面的功能,并且是面向函数式编程的方式,使用更方面,并且也相对更优雅,增加开发效率,在功能方面和apache-common差不多

Java8实现字符串操作

先看看使用Java8对字符串是如何操作

拼接字符串

private static final List<String> stringlist = Arrays.asList("Java", "Js", "Guava");public void testJoinByJava8() {String str = stringlist.stream().collect(Collectors.joining("#"));assertThat(str, equalTo("Java#Js#Guava"));}

使用stream操作可以快速的完成字符串的拼接操作

过滤Null进行字符串拼接

private static final List<String> stringListWithNull = Arrays.asList("Java", "Js", "Guava", null);public void testJoinFilterNullByJava8() {String str = stringListWithNull.stream().filter(item -> item != null && !item.isEmpty()).collect(Collectors.joining("#"));assertThat(str, equalTo("Java#Js#Guava"));}

使用stream操作,也可以很方便

将Null值替换为默认值进行拼接

private static final List<String> stringlist = Arrays.asList("Java", "Js", "Guava");public void testJoinReplaceNullByJava8() {String str = stringListWithNull.stream().map(item -> item != null && !item.isEmpty() ? item : "DEFAULT").collect(Collectors.joining("#"));assertThat(str, equalTo("Java#Js#Guava#DEFAULT"));}

Java8对字符串的操作也是较为方便,可以快速完成对应的字符串需要的功能

Joiner类简介

Joiner通过工厂模式创建对象,并提供高效、便捷的方法可以快速实现功能

``

字符串拼接

private static final List<String> stringlist = Arrays.asList("Java", "Js", "Guava");public void testJoinOnJoin() {// 拼接字符串String str = Joiner.on("#").join(stringlist);assertThat(str, equalTo("Java#Js#Guava"));}

通过on创建Joiner对象,并通过join方法来进行拼接,通过链式调用完成操作

通过append拼接字符串

private static final List<String> stringlist = Arrays.asList("Java", "Js", "Guava");public void testJoinOnAppend() {StringBuilder builder = new StringBuilder();StringBuilder builder1 = Joiner.on("#").appendTo(builder, stringlist);// 返回的是同一个对象,并不是新创建了StringBuilder对象assertThat(builder, sameInstance(builder1)); // trueassertThat(builder1.toString(), equalTo("Java#Js#Guava"));assertThat(builder.toString(), equalTo("Java#Js#Guava"));}

通过append拼接字符串需要传递StringBuilder对象,并且返回一个StringBuilder对象,并且传递的对象和返回的对象是同一个对象

join()方法内部也是通过append()方法实现,只是做了一层封装

过滤Null拼接字符串

private static final List<String> stringListWithNull = Arrays.asList("Java", "Js", "Guava", null);public void testJoinOnJoinWithNull() {String str = Joiner.on("#").skipNulls().join(stringListWithNull);assertThat(str, equalTo("Java#Js#Guava"));}

通过on创建joiner对象之后,可以通过skipNulls方法来指定过滤NUll值,只拼接非空字符串

替换Null进行字符串拼接

private static final List<String> stringListWithNull = Arrays.asList("Java", "Js", "Guava", null);public void testJoinOnJoinWithNullReplace() {String str = Joiner.on("#").useForNull("DEFAULT").join(stringListWithNull);assertThat(str, equalTo("Java#Js#Guava#DEFAULT"));}

通过useForNull()函数指定替换的默认值,来进行字符的拼接并过滤掉Null

将字符串输出到文件

private static final List<String> stringListWithNull = Arrays.asList("Java", "Js", "Guava", null);private static final String fileName = "D:\\test\\joiner.txt";public void testJoinOnAppendToWriter() {try(FileWriter writer = new FileWriter(new File(fileName))) {Joiner.on("#").useForNull("DEFAULT").appendTo(writer, stringListWithNull);assertThat(Files.isFile().test(new File(fileName)), equalTo(true));} catch (IOException e) {fail("joiner writer error");}}

通过appendTo可以将拼接的字符串写入到流中

内部时通过FileWriterappend方法将字符串写入到文件中

Map集合拼接字符串

private static final Map<String, String> map = ImmutableMap.of("Hello", "Guava", "Google", "Library");public void testJoinOnJoinWithMap() {String str = Joiner.on("#").withKeyValueSeparator("=").join(map);assertThat(str, equalTo("Hello=Guava#Google=Library"));}

通过withKeyValueSeparator方法指定map集合的key-value之间的关联字符,可以使用=或者!来制定key和value中间的连接符

通过Java8和Joiner的操作字符串的方式来看,Joiner提供了部分的封装和使用了更为巧妙的设计模式和函数式的风格,而通常来讲Java8中的原生方式也是经常使用,不过也可以尝试使用Joiner来完成字符串的操作,并且使用Guava还有其他的工具方式来使用~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。