介绍:
-
StringJoiner是Java8新出的一个类,用于构造由分隔符分隔的字符序列,并可选择性地从提供的前缀开始和以提供的后缀结尾。
构造方法:
StringJoiner joiner = new StringJoiner(","); //分隔符
StringJoiner joiner1 = new StringJoiner(",", "[", "]"); //分隔符,前缀,后缀
方法:
- length() 长度,如设置了前缀和后缀,则算入长度中
StringJoiner joiner = new StringJoiner(",");
StringJoiner joiner1 = new StringJoiner(",", "[{", "}]");
int length = joiner.length(); // 结果为0
int length1 = joiner1.length(); // 结果为4
- add( CharSequence newElement ) 添加元素
StringJoiner joiner = new StringJoiner(",");
StringJoiner joiner1 = new StringJoiner(",", "[{", "}]");
joiner.add("aa");
joiner.add("bb");
joiner1.add("cc");
joiner1.add("dd");
System.out.println(joiner.toString()); // aa,bb
System.out.println(joiner1.toString()); // [{cc,dd}] 此时joiner1.length()为9
- toString() 获得对象的字符串形式
StringJoiner joiner = new StringJoiner(",");
StringJoiner joiner1 = new StringJoiner(",", "[{", "}]");
joiner.add("aa");
joiner.add("bb");
joiner1.add("cc");
joiner1.add("dd");
System.out.println(joiner.toString()); // aa,bb
System.out.println(joiner1.toString()); // [{cc,dd}]
- setEmptyValue( CharSequence emptyValue ) 设置默认值,即使设置了前缀后缀,输出后仍不带前后缀
StringJoiner joiner = new StringJoiner(",");
StringJoiner joiner1 = new StringJoiner(",", "[{", "}]");
joiner.setEmptyValue("abc");
joiner1.setEmptyValue("def");
System.out.println(joiner.toString()); //结果 abc
System.out.println(joiner1.toString()); //结果 def
- merge( StringJoiner other ) 2个对象进行组合,被组合的对象之间的分隔符仍然是被组合对象原有的分隔符,不会被替换成组合对象的分隔符
StringJoiner joiner = new StringJoiner(",","{","}");
StringJoiner joiner1 = new StringJoiner("-", "[", "]");
joiner.add("aa");
joiner.add("bb");
joiner1.add("cc");
joiner1.add("dd");
joiner.merge(joiner1);
System.out.println(joiner.toString()); //结果 {aa,bb,cc-dd}
System.out.println(joiner1.toString()); //结果 [cc-dd]
利用Stream API:
List<String> rgbList = Arrays.asList("Red", "Green", "Blue");
String collect = rgbList.stream().map(color -> color.toString()).collect(Collectors.joining("&"));
System.out.println(collect); //结果 Red&Green&Blue