(1)ArrayList
底层是基于动态数组的数据结构。是有存放顺序的。
(2)LinkedList
底层是基于双链表的数据结构。每一个存储单元,都涉及到其他两个引用。
优缺点: 在执行get()/set()时,ArrayList的效率高,LinkedList需要移动指针,效率低
在增加/删除操作时,LinkedList效率高,ArrayList效率低(需要扩容,移动元素)。
ps:当然,在元素的数量大的情况下,区别才明显。
(3)Vector:是一个比较古老的集合类型,线程安全,但是效率特别低。
虽然安全,也不建议使用
接口Queue
Queue也是Collection的子接口,是一种数据结构,队列。
队列:通常都是一端进(offer),另一端出(poll)。
进出原则:FIFO
因为队列要经常进行增删操作,所以使用Linkedlist
实现了Queue接口.
常用方法:
boolean offer(E e):
元素从队尾进入队列。
E poll():
从队首移除元素,返回被移除的元素。当队列没有元素时
返回null.
E peek():
查看队首元素,不移除。队列中没有元素时,返回null.
注意: 为了避免移除队列的队首时出现null,我们最好先查看队首
是不是null.
Deque:是一个Queue的子接口,实现的是双端队列的数据结构。
双端队列:两端都可以进,也都可以出。
E offerFirst();
E offerLast();
E pollFirst();
E pollLast();
E peekFirst();
E peekLast();
栈的数据结构:先进后出:FILO
我们可以将双端队列的一端进行禁止操作。另一端进或
出,即Stack
void push(E e):
将元素 e推进栈中
E pop():
将栈中的最顶端的元素,移除。
增强for循环-foreach循环。
for(元素类型 变量名:要遍历的集合或者数组){
}
与经典for循环的区别:
(1)增强for循环中无法使用下标。
(2)经典for循环中可以使用下标。跟下标有关的逻辑,随便写。
版权声明:本文为qq_40933888原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。