如何将以下字符串转换为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 ,,,, ,5428665,0,mnc071.mcc404.gprs,9448861612,预付,1 ,,, 2255 ,,,,"
List<String> data = new ArrayList<>(Arrays.asList(line.split(","))
)
但问题是它转换为255(列)并且数组的大小已经达到36,但它应该是40
来自以下文件String.split(String)
:
将此字符串拆分为给定正则表达式的匹配项.此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split方法一样.因此,结尾的空字符串不包含在结果数组中.
你看到你的数组中没有包含空字符串,并且因为你的line
结尾,,,,
会丢失这4个元素,所以留下List
36的大小.
要包含调用重载所需的最后一个元素String.split(String, int)
,如下所示:
List<String> data = new ArrayList<>(Arrays.asList(line.split(",", -1)));
Run Code Online (Sandbox Code Playgroud)
从文档:
[...] If
n
(第二个参数tosplit()
)是非正数,那么模式将被应用尽可能多次,并且数组可以具有任何长度.[...]