Mac*_*rse 6 java arrays collections
我正在做一个需要返回long []的方法.它看起来像这样:
public long[] parseString(String input)
Run Code Online (Sandbox Code Playgroud)
输入是字符串,如:
在parseString里面我使用正则表达式获取所有数字并将它们添加到ArrayList,因为我不知道它会找到多少次发生.
最后,我创建了一个long [],其大小与arrayList相同,并为每个执行一个将其添加到long [] var.
另一种方式是:首先用a计算每次出现的次数
while ( matcher.find() ) size++;
Run Code Online (Sandbox Code Playgroud)
然后使用size创建一个long []的大小并执行:matcher.reset(),现在将long值保存在long []变量中.
你觉得哪个最好?
有一个更好的方法吗?
记住我无法改变方法签名:(
Cow*_*wan 13
有可能成为Google的番石榴图书馆的巨大皮条客(我真的很喜欢它!),Longs课程让它成为一个单行:
return Longs.toArray(foundLongs);
Run Code Online (Sandbox Code Playgroud)
TA-DAA!
由于Java中基元和对象之间的二分法,因此无法使用通用列表List<Long>.toArray(Long[])来构建基元数组。有可以使用的原始集合,但是无论哪种方式-使用列表或在组中工作-您都将数据从临时存储区复制到原始数组。
因此,您建议的任何一种方式都差不多。如果它对性能敏感,则同时对它们进行概要分析并选择最适合您的正则表达式。