什么更有效率?将拆分字符串存储在数组中,或在需要时调用拆分方法



将拆分字符串存储到数组中并在我的程序中使用此数组会更快,或者我可以在需要数组迭代时对字符串调用 .split() 方法?

String main = "1,2,3,4,5,6"; 
String[] array = main.split(",");

main.split(",");

每当我需要使用输入值时?

我意识到如果我将字符串存储在数组中,它将更具可读性。我只想知道 .split() 是否比使用数组需要更多的计算时间。由于拆分方法返回一个包含拆分字符串的数组。

一个简单的示例(?)循环来回答这个问题:

for (int i = main.length - 1; i >= 0; i--){}

for (int i = main.split(",") - 1; i >= 0; i--){}

这是一种权衡,就像编程中的大多数这样的事情一样。 如果只拆分一次并从那时起直接使用阵列,则可以节省处理时间,但会牺牲内存。 如果每次都拆分,则会以牺牲处理时间为代价来节省内存。

一个更省时,另一个更节省空间。

如您所见,split()方法返回一个数组,因此在后台,每次通过main.split(",")String 调用它以提取值时,都会迭代main。因此,仅使用一次并使用结果会更快。

我宁愿拆分一次并保留令牌,而不管数组的大小如何。 如果生成的数组很大,则每次拆分的成本会更高。 如果它很小,则最终存储可能不会成为一个因素。

如果您担心大型阵列的存储,那么上次拆分也应该是一个问题。 要缓解这种情况,只需在完成后为数组分配 null,然后让垃圾回收器执行其操作。

如果我要迭代一个令牌数组,我可能会这样做。

for (String token : main.split(",")) {
// do some stuff.
}

创建一次数组。

最新更新