[英]Converting ArrayList to String and converted String back to ArrayList
我處於需要在網絡中發送arraylist但需要將其轉換為字符串形式的情況。
現在在目標位置,我想將此String轉換為ArrayList以訪問各個元素。
請告訴我如何將轉換后的String(從ArrayList)轉換回ArrayList。
ArrayList
是什么? 如果元素是字符串或整數,則只需使用一些唯一的分隔符將它們連接起來,然后在另一側拆分回數組。
如果要發送任意Serializable
對象的ArrayList
,則必須對其進行序列化,例如,使用Java serialization 。 但是,這將產生byte[]
數組而不是String。 如果您受制於文本協議,則必須使用Base64編碼或類似方法。
這取決於是否可以在數組列表中提供對象的精確字符串表示形式。
下一個問題是:為什么它必須是arraylist的字符串表示形式?
就是說,如果確實需要使用字符串表示形式,則JSON可能會為您提供幫助,即您將數組列表轉換為JSON表示形式並返回。 有許多JSON框架,例如GSON,JSON-simple等。
private string ArrayListToString(System.Collections.ArrayList list)
{
string CStr = "";
foreach (string str in list)
{
CStr += str;
CStr += "<b>";
}
return CStr;
}
private System.Collections.ArrayList ArrayListToString(string CStr)
{
System.Collections.ArrayList list = new System.Collections.ArrayList();
string[] seperator = { "<b>" };
string[] words = CStr.Split(seperator, StringSplitOptions.RemoveEmptyEntries);
foreach (string str in words)
{
list.Add(str);
}
return list;
}
我寧願不使用程序語言指定的二進制序列化。 將來會因某些版本問題而卡住。
您可以使用JSON格式,使用JSONArray.toString和JSONArray.fromObject(String)進行串行/反序列化
如果您需要速度和空間方面的性能,
我建議使用Google Protocol Buffers,它是一種以有效但可擴展的格式編碼結構化數據的方法。 Google幾乎所有內部RPC協議和文件格式都使用協議緩沖區。
與XML相比,協議緩沖區在序列化結構化數據方面具有許多優勢。 協議緩沖區:
* are simpler
* are 3 to 10 times smaller
* are 20 to 100 times faster
* are less ambiguous
* generate data access classes that are easier to use programmatically
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.