这篇文章将为大家详细讲解有关Java中StringJoiner工具的使用方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
在平时的业务开发中,我们可能会遇到字符串列表根据分隔符进行拼接的需求。比如:
输入:
数组:[“a”,“b”,“c”]分隔符:","输出:
“a,b,c”
通常我们可以使用StringBuilder根据下标位置决定是否需要添加分隔符以达到目的,比如:
public static void main(String[] args) { StringBuilder sb = new StringBuilder(); String[] strings = new String[]{"a", "b", "c"}; String delimiter = ","; for (int i = 0; i < strings.length; i++) { if (i != 0) { sb.append(delimiter); } sb.append(strings[i]); } System.out.println(sb.toString()); }
或者:
public static void main(String[] args) { StringBuilder sb = new StringBuilder(); String[] strings = new String[]{"a", "b", "c"}; String delimiter = ","; int tmp = strings.length - 1; for (int i = 0; i < strings.length; i++) { sb.append(strings[i]); if (i != tmp) { sb.append(delimiter); } } System.out.println(sb.toString()); }
但是每次遇到这种情况都去这样拼接很麻烦,而且如果使用迭代器,没有下标就不能使用这种方法。那么就每次append分隔符,最后再截断:
public static void main(String[] args) { StringBuilder sb = new StringBuilder(); String[] strings = new String[]{"a", "b", "c"}; String delimiter = ","; for (String str:strings) { sb.append(str).append(delimiter); } System.out.println(sb.substring(0,sb.length()-1)); }
所以通常情况下,我们都会去扩展一个StringBuilder以提供分隔符组装的功能,博主平时是这样弄的:
public class MyStringBuilder { private StringBuilder stringBuilder; private String delimiter; public MyStringBuilder(String delimiter) { this.delimiter = delimiter; } public MyStringBuilder append(String item) { getStringBuilder().append(item); return this; } /** * 模拟的就是这个逻辑: * if(index != 0){ * append(delimiter); * } * append(str); * * @return */ private StringBuilder getStringBuilder() { if (stringBuilder == null) { //相当于index==0, stringBuilder = new StringBuilder(); } else { stringBuilder.append(delimiter); } return stringBuilder; } @Override public String toString() { return stringBuilder == null ? "" : stringBuilder.toString(); } }
在初始化的时候指定分隔符,然后每次直接append就行了,由内部决定在何时添加分隔符。
在JDK1.8之后,提供了一个StringJoiner类,提供了类似的功能,可以在初始化的时候指定分隔符和前缀后缀:
StringJoiner sj = new StringJoiner(",","(",")"); sj.add("a").add("b").add("c"); System.out.println(sj.toString()); //输出:(a,b,c)
博主大致看了一下StringJoiner的实现逻辑,很简单,和咱们扩展StringBuilder基本是一样的逻辑,另外加入了前缀后缀,然后多了一个merge的功能:
public StringJoiner merge(StringJoiner other) { Objects.requireNonNull(other); if (other.value != null) { final int length = other.value.length(); // lock the length so that we can seize the data to be appended // before initiate copying to avoid interference, especially when // merge 'this' StringBuilder builder = prepareBuilder(); builder.append(other.value, other.prefix.length(), length); } return this; }
Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5. 企业级应用开发;6. Java大数据开发;7.游戏开发等。
关于“Java中StringJoiner工具的使用方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。