在平時的開發中,我們可能會遇到需要拼接如下格式的字符串(至少我是遇到了很多次):
1,2,3,4,5,6,7,8,9,10,11,12,12,12,12,34,234,2134,1234,1324,1234,123
這個字符串的特點:多個數據之間通過某一個特殊符號分割。
以前我都是這樣想的,我相信很多的people也是這樣想的:
public class StringTest{ public static void main(String[] args) { StringBuilder sb = new StringBuilder(); for (int i = 0; i <= 10; i++) { //以下這個判斷對于有強迫癥的人來說確實有點不爽,每次循環進來都要進行判斷以下,如果循環的次數很多呢,我們都會想到會不會對性能有影響呢? if (i != 0) { sb.append(","); } sb.append(i); } System.out.PRintln(sb.toString()); }}
看到這里,你平時的做法是不是也是這樣的,每一次循環中都存在這樣一個判斷,如果是回答是肯定的,那么你就有必要繼續往下看了,因為以上的方式確實不怎么明智。(至少對于我這個強迫癥&&追求完美的人來說,這樣的代碼讓我很不爽)。
在這里不會有人要反駁的代碼,要我用"+"來拼接字符串吧,如果你真是這樣想的,Oh My God!!!
我在這里提供兩種我知道的方式去解決這種現象問題:
方法一:首先取出集合的第一個元素,通過StringBuilder的構造方法,傳入第一個元素,這樣是不是后面的每一次循環就不需要判斷了???
public class StringTest{ public static void main(String[] args) { StringBuilder sb = new StringBuilder("0"); for (int i = 1; i <= 10; i++) { sb.append(","); sb.append(i); } System.out.println(sb.toString()); }}
很多小伙伴想到了上面的方式是通過技巧(java api的掌握熟練程度)將第一個特殊的元素取出來,特殊處理,后面的是不是每一個元素都有規律了,都是以一個字符加上一個數據。想到這里,你有沒有想到點其他的?
作為一個程序員我們就應該練就一身舉一反三的本領,上面的方式既然能夠將第一個元素作為特殊的數據單獨提取出來,那么有沒有辦法將最后的一個數據也作為特殊數據單獨提取出來,前面的其他數據不是就有規律可循了嗎?
所以下面就引出了我的第二種解決辦法(《Java編程思想第四版》P286)
方式二:很多人都熟悉StringBuilder的append();方法,但是很多人卻不知道StringBuilder的delete(int startPost,int endPost);如果你有舉一反三的學習習慣,那么很容易就會掌握到這個api接口。其實在java的api中很多都是相對的,通過這種方式去學習,很快你就會發現自己知道的就很多。
public class StringTest{ public static void main(String[] args) { StringBuilder sb = new StringBuilder(); for (int i = 0; i <= 10; i++) { sb.append(i); sb.append(","); } sb.delete(sb.length() - 1, sb.length());//這里就看你知不知道這個api接口了 System.out.println(sb.toString()); }}
以上只是我針對這一個小的知識點的技巧告訴大家,在學習中應該多學會舉一反三,掌握學習方法是你學好編程的一條捷徑。歡迎大家有更好的學習方法,學習技巧,知識點技巧與我共同討論與分享。
轉載請注明出處:http://www.49028c.com/liushaofeng89/p/4865263.html
新聞熱點
疑難解答