1

我正在实现一个 Android 应用程序,它从 web 服务接收字符串的 json 数组。这个数组可能非常大(超过 500 个条目)。我正在将此数据解析为 Vector 对象。在应用程序中,用户可以将字符串添加到此向量中,但字符串必须添加到它的开头。

现在我正在做以下事情来实现它:

Collections.reverse(myVector);
myVector.add(newString);
Collections.reverse(myVector);

有没有其他更便宜的方法来做到这一点?

谢谢

4

5 回答 5

4

你可以用 ajava.util.LinkedList代替吗?然后你可以使用addFirst,因为它是一个双向链表,它应该更有效。

于 2013-04-16T16:46:45.757 回答
1

您可以使用该Vector#add(index, element)方法。但是,它仍然会产生每次向下移动元素的成本。

但是,为了尽可能避免成本,然后Collections.reverse在开始时使用,然后保持反转,让用户添加字符串,直到完成。添加到末尾(附加)不需要将现有元素移开。完成后,再将其反转一次以获得正确的顺序。总逆转——只有 2 次。

于 2013-04-16T16:48:55.757 回答
1

为什么我们不能使用 Vector.add(index,element) api,索引为 1?

还是我错过了什么?

于 2013-04-16T16:46:54.193 回答
1

一种更快的方法是直接在向量的开头插入,使用.add(int, E) ...

myVector.add(0, newString);
于 2013-04-16T16:47:47.453 回答
0

你必须使用向量吗?如果你使用 ArrayList 你可以在前面插入元素 list.add(0, element)

于 2013-04-16T16:49:22.777 回答