即使列表中没有项目,Android ArrayList大小也会返回1

时间:2016-01-20 09:07:20

标签: java android arraylist

我正在使用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.

2 个答案:

答案 0 :(得分:7)

这是String.split的一项功能。

  

此方法返回的数组包含此字符串的每个子字符串,该子字符串由与给定表达式匹配的另一个子字符串终止,或以字符串结尾终止。

因此,拆分空字符串将返回包含一个空字符串的1项数组。

答案 1 :(得分:1)

在你的情况下2

String dbString2="[]";

在您的代码中,它尝试将逗号(,)拆分为分隔符。 如果找到分隔符,它会将其拆分成碎片。但是如果它没有找到任何separtor,它会将给定的单个字符串分配给返回的列表。

在你的情况下,一个String数组,其中一个元素的值为&#34;&#34; ,或者说空字符串

String dbString2="[]";替换为String dbString2="[,]";

在这种情况下,它将返回大小为0而没有元素。