我正在使用Android。我有一个字符串数据的ArrayList,我将整个Arraylist保存为本地数据库中的单个字符串。后来我从db获取此字符串并将此字符串转换为数组列表,
案例1:
String dbString=[10,5,34,67]; // array list as string
String replace = dbString.toString().replace("[", "");
String replace1 = replace.replace("]", "");
mysignimgList = new ArrayList<String>(Arrays.asList(replace1.split(",")));
案例2:
String dbString2=[]; //empty array list as string
String replace = dbString2.toString().replace("[", "");
String replace1 = replace.replace("]", "");
mysignimgList2 = new ArrayList<String>(Arrays.asList(replace1.split(",")));
但是在第二种情况下,即使arraylist中没有项目,它的大小也会变为mysignimgList2.size()= 1.
答案 0 :(得分:7)
这是String.split的一项功能。
此方法返回的数组包含此字符串的每个子字符串,该子字符串由与给定表达式匹配的另一个子字符串终止,或以字符串结尾终止。
因此,拆分空字符串将返回包含一个空字符串的1项数组。
答案 1 :(得分:1)
在你的情况下2
String dbString2="[]";
在您的代码中,它尝试将逗号(,)拆分为分隔符。 如果找到分隔符,它会将其拆分成碎片。但是如果它没有找到任何separtor,它会将给定的单个字符串分配给返回的列表。
在你的情况下,一个String数组,其中一个元素的值为&#34;&#34; ,或者说空字符串。
将String dbString2="[]";
替换为String dbString2="[,]";
。
在这种情况下,它将返回大小为0而没有元素。