如何将以下字符串转换为java ArrayList?
我尝试过:
“ GOC,404719160795907,911367109182460,218.248.72.40,62944,31,3331,31425,3544151354,117.200.252.120,bsnlnet,2,100.115.103.86,0,0,0,20190225123602,20190225125558,1196,,0,0 ,,,, 5428665,0,mnc071.mcc404.gprs,9448861612,Prepaid,1 ,,, 2,255 ,,,,“
List<String> data = new ArrayList<>(Arrays.asList(line.split(","))
)
但是问题是它最多可以转换为255(Column)并且数组的大小为36,但是应该为40
答案 0 :(得分:8)
摘自String.split(String)
的文档:
在给定正则表达式的匹配项周围拆分此字符串。 该方法的工作方式就像通过调用具有给定表达式且极限参数为 zero 的二元拆分方法一样。 因此,空数组不包含在结果数组中。
您会看到空字符串未包含在数组中,并且由于line
以,,,,
结尾,因此您将丢失这4个元素,而剩下的List
大小为36
要包含最后一个元素,您需要调用重载String.split(String, int)
,如下所示:
List<String> data = new ArrayList<>(Arrays.asList(line.split(",", -1)));
从文档中:
[...]如果
n
(split()
的第二个参数)为非正数,则该模式将被尽可能多地应用,并且数组可以具有任何长度。 [...]