Guava-Joiner类

本文介绍Guava库中的Joiner类,展示如何利用其多种方法简化字符串连接操作,包括处理null值和Map类型的键值对。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入

String字符串代码中出现的频率是相当高的,涉及字符串的知识点也是很多很多,比如String、StringBuilder、StringBuffer三者的区别,性能的比较,是否线程安全等等。 


用分隔符把字符串序列连接起来也可能会遇上不必要的麻烦。如果字符串序列中含有null,那连接操作会更难。Fluent风格的Joiner让连接字符串更简单。

方法

S.N.
方法及说明
1 <A extends Appendable> A appendTo(A appendable, Iterable<?> parts)
每个追加部分的字符串表示,使用每个之间先前配置的分离器,可用来追加。
2 <A extends Appendable> A appendTo(A appendable, Iterator<?> parts)
每个追加部分的字符串表示,使用每个之间先前配置的分离器,可用来追加。
3 <A extends Appendable> A appendTo(A appendable, Object[] parts)
每个追加部分的字符串表示,使用每个之间先前配置的分离器,可用来追加。
4 <A extends Appendable> A appendTo(A appendable, Object first, Object second, Object... rest)
追加到可追加的每个其余参数的字符串表示。
5 StringBuilder appendTo(StringBuilder builder, Iterable<?> parts)
每个追加部分的字符串表示,使用每个之间先前配置的分离器,为构建者。
6 StringBuilder appendTo(StringBuilder builder, Iterator<?> parts)
每个追加部分的字符串表示,使用每个之间先前配置的分离器,为构建者。
7 StringBuilder appendTo(StringBuilder builder, Object[] parts)
每个追加部分的字符串表示,使用每个之间先前配置的分离器,为构建者。
8 StringBuilder appendTo(StringBuilder builder, Object first, Object second, Object... rest)
追加到构建器的每个其余参数的字符串表示。
9 String join(Iterable<?> parts)
返回一个包含每个部分的字符串表示,使用每个之间先前配置的分隔符的字符串。
10 String join(Iterator<?> parts)
返回一个包含每个部分的字符串表示,使用每个之间先前配置的分隔符的字符串。
11 String join(Object[] parts)
返回一个包含每个部分的字符串表示,使用每个之间先前配置的分隔符的字符串。
12 String join(Object first, Object second, Object... rest)
返回一个包含每个参数的字符串表示,使用每个之间先前配置的分隔符的字符串。
13 static Joiner on(char separator)
返回一个加入者其连续元素之间自动地分隔符。
14 static Joiner on(String separator)
返回一个加入者其连续元素之间自动地分隔符。
15 Joiner skipNulls()
返回一个相同的行为,因为这加入者,除了自动跳过任何提供空元素的加入者。
16 Joiner useForNull(String nullText)
返回一个相同的行为,因为这一个加入者,除了自动替换nullText任何提供null元素。
17 Joiner.MapJoiner withKeyValueSeparator(String keyValueSeparator)
返回使用给定键值分离器MapJoiner,和相同的结构,否则为Joiner连接符 。


举列

1.连接List列表  

static Joiner on(char separator)
返回一个加入者其连续元素之间自动地分隔符。

public  void  Test2() {
     List<String> list =  new  ArrayList<String>();
     list.add( "你" );
     list.add( "们" );
     list.add( "好" );
     list.add( "吗" );
     System.out.println(Joiner.on( '!' ).join(list));
}

你!们!好!吗


2.连接Iterator<T>列表 

String join(Iterable<?> parts)
返回一个包含每个部分的字符串表示,使用每个之间先前配置的分隔符的字符串。

public  void  Test2() {
     List<String> list =  new  ArrayList<String>();
     list.add( "你" );
     list.add( "们" );
     list.add( "好" );
     list.add( "吗" );
     Iterator<String> it =list.iterator();
     System.out.println(Joiner.on( '!' ).join(it));
}

你!们!好!吗


3.连接多个字符串

String join(Object first, Object second, Object... rest)
返回一个包含每个参数的字符串表示,使用每个之间先前配置的分隔符的字符串。

public  void  Test2() {
     System.out.println(Joiner.on( '!' ).join( "你" , "们" , "好" , "吗" ));
}

你!们!好!吗



4.连接字符串与列表

StringBuilder appendTo(StringBuilder builder, Object[] parts)
每个追加部分的字符串表示,使用每个之间先前配置的分离器,为构建者。

public  void  Test2() {
     List<String> list =  new  ArrayList<String>();
     list.add( "你" );
     list.add( "们" );
     list.add( "好" );
     list.add( "吗" );
     Iterator<String> it =list.iterator();
     StringBuilder builder= new  StringBuilder( "主题" );
     System.out.println(Joiner.on( ',' ).appendTo(builder,list));
}


主题你,们,好,吗



5.跳过null值连接

Joiner skipNulls()
返回一个相同的行为,因为这加入者,除了自动跳过任何提供空元素的加入者。

public  void  Test2() {
     List<String> list =  new  ArrayList<String>();
     list.add( "你" );
     list.add( "们" );
     list.add( null );
     list.add( "好" );
     list.add( "吗" );
     Iterator<String> it =list.iterator();
     StringBuilder builder= new  StringBuilder( "主题" );
     System.out.println(Joiner.on( ',' ).skipNulls().appendTo(builder,list));
}

主题你,们,好,吗


6.替换null值进行连接


Joiner useForNull(String nullText)
返回一个相同的行为,因为这一个加入者,除了自动替换nullText任何提供null元素。


public  void  Test2() {
     List<String> list =  new  ArrayList<String>();
     list.add( "你" );
     list.add( "们" );
     list.add( null );
     list.add( "好" );
     list.add( "吗" );
     Iterator<String> it =list.iterator();
     StringBuilder builder= new  StringBuilder( "主题" );
     System.out.println(Joiner.on( ',' ).useForNull( "到底" ).appendTo(builder,list));
}

主题你,们,到底,好,吗


7.Joiner.MapJoiner withKeyValueSeparator(String keyValueSeparator)
返回使用给定键值分离器MapJoiner,和相同的结构,否则为Joiner连接符 。


public  void  Test2() {
     System.out.println( Joiner.on( "&" ).withKeyValueSeparator( "=" ).join(ImmutableMap.of( "id" "123" "name" "green" )));
}

id=123&name=green

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值