Java8 StringJoiner的代码详解
程序员文章站
2022-04-30 10:07:34
...
终于,Java 8在java.util软件包下发布了StringJoiner类。我认为相对于我们使用StringBuffer / StringBuilder的旧式做法来连接字符串,这并非是一个迥然不同的实现。我们一起来看一看StringJoiner的用法和它的内部实现。
例如,我有两个字符串为“Smart”和“Techie”,我想连接这些字符串为[Smart,Techie]。在这种情况下,我的前缀为“[”,后缀为“]”,以及分隔符为“,”。 StringJoiner有如下两个构造函数。
StringJoiner(CharSequence delimiter)
StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
我们想要有前缀和后缀,因此在例子中使用第二个构造函数。
StringJoiner sjr = new StringJoiner(",", "[", "]"); sjr.add("Smart").add("Techie"); System.out.println("The final Joined string is " + sjr);
如果我们不希望有前缀和后缀,那么就:
sjr1.add("Smart").add("Techie"); System.out.println("The final Joined string is " + sjr1);
现在,我们将看到add和toString()方法的实现。
public StringJoiner add(CharSequence newElement) { prepareBuilder().append(newElement); return this; }
prepareBuilder()实现如下。
private StringBuilder prepareBuilder() { if (value != null) { value.append(delimiter); } else { value = new StringBuilder().append(prefix); } return value; }
从上面的实现中,可以很明显看到StringJoiner遵循老式的做法。
toString()实现如下。
public String toString() { if (value == null) { return emptyValue; } else { if (suffix.equals("")) { return value.toString(); } else { int initialLength = value.length(); String result = value.append(suffix).toString(); // reset value to pre-append initialLength value.setLength(initialLength); return result; } }
以上就是Java8 StringJoiner的代码详解的详细内容,更多请关注其它相关文章!
上一篇: C#读取中文文件乱码的解方法