Java 帶分隔字串、字串陣列和 ArrayList 之間的轉換
阿新 • • 發佈:2019-01-02
Java 帶分隔字串、字串陣列和 ArrayList<String> 之間的轉換
一、先來認識一下標題說的這三件東西,也許描述的不清楚,但有了下面的例子,就不會有歧義了
1、帶分隔字串是這樣的:
String seperateStr = "111,222,333,444,555,666,777";
以逗號分隔;也可以以其它字元或字串進行分隔,或者有多個分隔;2、字串陣列:
String[] seperates = {"111", "222", "333", "444", "555", "666", "777"};
也可以
String seperates[] = {"111", "222", "333", "444", "555", "666", "777"};
或者
int arraySize = 7;
String[] seperates = new String[arraySize ];
seperates[0] = "111";
seperates[0] = "222";
seperates[0] = "333";
seperates[0] = "444";
seperates[0] = "555";
seperates[0] = "666";
seperates[0] = "777";
再或者String[] seperates = new String[]{"111", "222", "333", "444", "555", "666", "777"};
3、ArrayList<String>
List seperateList = new ArrayList<String>();
二、如何在三件東西間轉換呢?
1、帶分隔字串 與 字串陣列間轉換
a、遍歷拼接,從字串陣列轉換成帶分隔的字串;
b、查分隔個數初始化字串陣列,再逐一查分隔位置取子串賦值給字串陣列元素;
上面提到這兩種方法,確實很夠底層,不過確實浪費時間,為什麼 Java 的內建方法中沒有像 iOS 中的方便處理方法呢:
NSString *seperateStr = @"111,222,333,444,555,666,777"; NSArray *seperates = [seperateStr componentsSeparatedByString:@","]; NSString *seperateBackStr = [seperates componentsJoinedByString:@","];
彆著急,Java 沒自帶,不妨找外援。
這是 Apache 提供的通用工具庫,關於字串工具 StringUtils 的詳細文件見此頁。
String[] seperates = StringUtils.split(seperateStr, ",");
String resultStr = StringUtils.join(seperates, ",");
這不就有了嗎!唯一的遺憾,功能不內聚,需要引入三方工具庫。實際上,Java 的 String 類提供了 split 方法,可以進行分隔轉成陣列,但相比上面庫的功能,那可是捉襟見肘了:
String 類提供的分隔方法:
StringUtils 提供的分隔方法:
這個工具庫的功能遠不止於此,下面摘要部分:
2、字串陣列與 ArrayList<String> 之間的轉換
這要藉助於 Collections 類的方法來完成轉換了。
將字串陣列中的元素一次性新增到 ArrayList<String> 中:
Collections.addAll(seperateList, seperates);
將 ArrayList<String> 轉換成 陣列:
String[] seperateStr = (String[]) seperateList.toArray();
3、至於 ArrayList<String> 與字串之間的轉換,可能意義會有所不同了
如果是想按上面的分隔方式,那麼有上面的鏈條,足以進行轉換了,確實沒有太便捷的方法;
再有,就是 toString() 方法會以字串形式呈現該 ArrayList 物件,僅描述而已,你也可以派生子類,過載 toString 方法,按你自已的意圖來組織,或加個引數,傳入分隔符。