您好,欢迎访问一九零五行业门户网

Java8 StringJoiner的代码详解

终于,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的代码详解的详细内容。
其它类似信息

推荐信息