Sor*_*son 12 java arrays implementation resizable
在Java中使用可调整大小的数组的最佳方法是什么?我尝试使用Vector,但是当你进行插入时,它会移动所有元素,我需要一个可以增长但元素保持不变的数组.我确信这有一个简单的答案,但我仍然不太确定.
Kev*_*ell 23
作为替代方案,您可以使用ArrayList.它是List接口的可调整大小的数组实现.
用法(使用String):
List<String> myList = new ArrayList<String>();
myList.add("a");
myList.add("c");
myList.add("b");
Run Code Online (Sandbox Code Playgroud)
订单就像你把它们放进去一样:a,c,b.
您还可以获得这样的单个项目:
String myString = myList.get(0);
Run Code Online (Sandbox Code Playgroud)
这将给你第0个元素:"a".
就像三条指出的:“ An array is a static datastructure, so they can't grow”。列表接口可以由一个数组支持(例如Kevin 在他的帖子中指出的ArrayList)。当列表结构已满并且必须将新项目添加到列表时。然后该结构首先创建一个新数组,该数组可以包含旧元素和必须添加到列表中的新元素。
列表接口有不同的实现,它们都有优点/缺点,您应该选择最能解决您的问题的一个。下面我将尝试给出何时使用哪种实现的简短摘要:
size, isEmpty, get, set, iterator, and listIterator在恒定时间内执行大量操作时,您应该使用此实现。该add操作在摊销常数时间内运行,即添加 n 个元素需要 O(n) 时间。我认为您应该在进行更多查找(get())然后将项目添加到列表(add())时使用此实现。add()再get()。请注意,这些列表实现不是线程安全的,这意味着从多个线程访问它们时可能会获得竞争条件。如果您想从多个线程使用 List 实现,我建议您研究java.util.concurrent包并使用该类的实现。