在Java中使用分隔符连接值列表最优雅的方法是什么?
发布时间:2020-12-14 05:07:08 所属栏目:Java 来源:网络整理
导读:我从来没有找到一个整洁(呃)的方式来做以下事情. 说我有一个列表/数组的字符串. abcdefghijkl 我想将它们连接成一个由逗号分隔的单个字符串,如下所示: abc,def,ghi,jkl 在Java中,如果我这样写(原谅语法), String[] list = new String[] {"abc","def","ghi",
我从来没有找到一个整洁(呃)的方式来做以下事情.
说我有一个列表/数组的字符串. abc def ghi jkl 我想将它们连接成一个由逗号分隔的单个字符串,如下所示: abc,def,ghi,jkl 在Java中,如果我这样写(原谅语法), String[] list = new String[] {"abc","def","ghi","jkl"}; String str = null; for (String s : list) { str = str + s + "," ; } System.out.println(str); 我去拿 abc,jkl,//Notice the comma in the end 所以我必须重写上面的for循环如下 ... for (int i = 0; i < list.length; i++) { str = str + list[i]; if (i != list.length - 1) { str = str + ","; } } ... 这可以在Java中更优雅的方式完成吗? 我一定会使用一个StringBuilder / Buffer来提高效率,但是我想说明一下这个例子,而不是太冗长.通过优雅,我的意思是避免在循环内检查丑陋(?)的解决方案. 解决方法
这是我的版本:
Java Tricks: Fastest Way to Collecting Objects in a String
StringBuilder buffer = new StringBuilder (); String delim = ""; for (Object o: list) { buffer.append (delim); delim = ","; // Avoid if(); assignment is very fast! buffer.append (o); } buffer.toString (); 作为额外的好处:如果循环中的代码更复杂,那么这种方法将产生一个正确的结果,而不需要复杂的if(). 还要注意,使用现代CPU,分配将仅在缓存中(或者可能仅在寄存器中)发生. 结论:虽然这段代码看起来很奇怪,但它有很多优点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |