【发布时间】:2012-07-05 02:32:02
【问题描述】:
假设我在 ArrayList 中插入 5 个字符串。从ArrayList 插入和检索的顺序会一样吗?
【问题讨论】:
-
尝试一次是一回事。确保每次都相同是另一回事。
标签: java collections
假设我在 ArrayList 中插入 5 个字符串。从ArrayList 插入和检索的顺序会一样吗?
【问题讨论】:
标签: java collections
是的。 ArrayList 是一个顺序列表。所以,插入和检索顺序是一样的。
如果您在检索期间添加元素,则顺序将不会保持不变。
【讨论】:
如果您总是添加到末尾,那么每个元素都将添加到末尾并保持这种状态,直到您更改它为止。
如果你总是在开头插入,那么每个元素将按照你添加它们的相反顺序出现。
如果你把它们插在中间,顺序就会是别的东西。
【讨论】:
是的,它保持不变。 但为什么不轻易测试呢?制作一个 ArrayList,填充它,然后检索元素!
【讨论】:
是的,ArrayList 是一个有序集合,它维护了插入顺序。
检查下面的代码并运行它:
public class ListExample {
public static void main(String[] args) {
List<String> myList = new ArrayList<String>();
myList.add("one");
myList.add("two");
myList.add("three");
myList.add("four");
myList.add("five");
System.out.println("Inserted in 'order': ");
printList(myList);
System.out.println("\n");
System.out.println("Inserted out of 'order': ");
// Clear the list
myList.clear();
myList.add("four");
myList.add("five");
myList.add("one");
myList.add("two");
myList.add("three");
printList(myList);
}
private static void printList(List<String> myList) {
for (String string : myList) {
System.out.println(string);
}
}
}
产生以下输出:
Inserted in 'order':
one
two
three
four
five
Inserted out of 'order':
four
five
one
two
three
详细信息请参考文档:List (Java Platform SE7)
【讨论】:
是的,它永远都是一样的。来自documentation
将指定元素附加到此列表的末尾。参数:e 要附加到此列表的元素返回:true(由 Collection.add(java.lang.Object))
ArrayList add() 实现
public boolean More ...add(E e) {
ensureCapacity(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}
【讨论】: