天天看点

泛型、LinkedList类、Vector类、Stack类、Queue接口

本文主要内容:

(1)泛型

(2)LinkedList类

(3)Vector类

(4)Stack类

(5)Queue接口

(6)LinkedList与ArrayList的区别

1.泛型

(1)泛型是用来规定数据类型的,定义时用一种符号来代替某种类型,在使用具体的数据类型时,将定义的符号替换掉。

(2)泛型可以定义在哪里?

泛型类:类定义时,描述的某种数据类型

泛型接口:与泛型类基本一致,但泛型接口必须添加泛型

泛型方法:方法调用时传参数,方法的泛型与类无关,带有泛型的方法可以不放在带有泛型的类中

注意:泛型需要用引用数据类型来代替

2.LinkedList类(java.util包)实现了Deque ,List ,Queue

Deque(双端队列,具有队列和栈性质的数据结构)

(1)底层是双向链表的数据结构形式:适合插入或删除,不适合遍历轮询

(2)构建对象:无参构造、带Collection的有参构造

LinkedList();构建一个空列表
LinkedList(Collection c);
构造一个包含指定集合的元素的列表,按照它们由集合的迭代器返回的顺序
           

(3)常用方法:

add(E e):尾插元素

void addFirst(E e):在该链表的开头插入指定元素

void addLast(E e):将指定元素插入列表的末尾

E getFirst():返回链表的第一个元素

E getLast():返回链表中最后一个元素

E peek():检索但不删除列表的头

E peekFirst():检索但不删除链表的第一个元素

E peekLast():检索但不删除链表的最后一个元素

E poll():检索并删除链表的头

E pollFirst():检索并删除链表的第一个元素

E pollLast():检索并删除链表的最后一个元素

void push(E e):将该元素推送到由列表表示的栈上

E pop():从此列表中栈上弹出一个元素

List<E>

subList(int fromIndex,int toIndex):返回fromIndex(含)和toIndex之前的

视图

3.Vestor类(java.util包)实现了Collection,List

(1)Vector是ArrayList的早期版本,Vector底层是用动态数组的形式存储的,Vector是线程同步的,安全性高,效率低

(3)扩容方式与ArrayList(1.5倍)不同,默认扩容方式为2倍,可以通过构造方法创建对象时修改这一机制

(3)构造方法:

Vector():构造一个空向量,使其内部数据数组的大小为 10 ,标准容量增量为零。
Vector(Collection<? extends E> c):
构造一个包含指定集合元素的向量,按照集合的迭代器返回的顺序。
Vector(int initialCapacity)
构造具有指定初始容量并且其容量增量等于零的空向量。
Vector(int initialCapacity, int capacityIncrement)
构造具有指定的初始容量和容量增量的空向量。
           

(4)常用方法参考ArrayList的一些方法

4.Stack类(java.util包)实现了Collection,List

(1)构造方法只有一个无参的

Stack():创建了一个空堆栈
           

(2)常用方法:

boolean=push(E e):将一个元素压入栈顶

E=pop():将一个从栈顶取出并删除

E=peek():查看栈顶元素,不删除

boolean=empty():判断栈内元素是否为空

int=search():查找给定的元素在栈中的位置

5.Queue接口(java.util包)实现了Deque

(1)通常子类:LinkedList、ArrayDeque

(2)通常用无参方法创建对象

Queue():创建一个空队列
           

(3)常用方法:

boolean=add(E e):将指定的元素插入到此队列中

E=element():检索,但不删除,这个队列的头

boolean=offer(E e):将指定的元素插入到此队列中

E=peek():检索但不删除此队列的头,如果此队列为空,则返回 null

E=poll():检索并删除此队列的头,如果此队列为空,则返回 null

E=remove():检索并删除此队列的头

泛型、LinkedList类、Vector类、Stack类、Queue接口

6.ArrayList与LinkedList的区别

(1)ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构

(2)对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList底层是链表,每移动一次,都要根据引用去找下一个元素

(3)对于在指定index位置新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据

继续阅读