LinkedList:底层使用的链表数据结构
(链表数据结构:后一位元素链接前一位元素,用链接的形式互相访问,比如添加数据,在A与B之间添加D,只需要让D链接A,B链接D)
1】特点:增删速度快,但是查询稍慢
LinkedList类集合特有方法:
【1】addFirst(element)将指定元素插入此列表的开头
addFirst(element)=offerFirst(element)
【2】addLast(element)将指定元素添加到此列表的结尾
addLast(element)=offerLast(element)
【3】注意使用getFirst()与getLast()时,如果集合列表为空会报NoSuchElementException (没有这个元素异常)异常
1)getFirst()获取列表开头的元素(列表不能为空)
2)getLast()获取列表末尾的元素(列表不能为空)
【4】但是1.6版本后,LinkedList更新了优化上方的方法
1)peekFirst()获取但不移除列表开头的元素,如果列表为空,则返回null
2)peekLast()获取列表末尾的元素,如果列表为空,则返回null
【5】注意使用removeFirst()与removeLast()时,如果集合列表为空会报NoSuchElementException (没有这个元素异常)异常
1)removeFirst()移除并获取列表开头的元素(列表不能为空)
2)removeLast()移除并获取列表末尾的元素(列表不能为空)
【6】但是1.6版本后,LinkedList更新了优化上方的方法
1)pollFirst()移除并获取列表开头的元素,如果列表为空,则返回null
2)pollLast()移除并获取列表末尾的元素,如果列表为空,则返回null
LinkedList类集合练习
在开发中,我们会重新封装与项目相关的集合容器和特定名称,这样更便于开发
public static void main(String[] args) {
DuiLie dl=new DuiLie();
dl.myAdd(1);
dl.myAdd("hh");
while(!dl.isNull()){
System.out.println(dl.myGet());
}
}
class DuiLie{
private LinkedList link;
DuiLie(){
link=new LinkedList();
}
public void myAdd(Object obj){
link.addFirst(obj);
}
public Object myGet(){
return link.removeLast();
}
public boolean isNull(){
return link.isEmpty();
}
}
3)Vector:底层是数组数据结构。线程同步,被ArrayList替代了
1】Vector与ArrayList一样都是数组数据结构,但是当当元素超过初始容量时,它会new一个新的容量长度为20(100%的延长)的数组,相比ArrayList而言比较浪费空间,被ArrayList替代了
2】特点:因为线程同步,运行比较慢
简介Vector
//【1】枚举就是Vector特有的取出方式
//【2】枚举与迭代器很相似,但是枚举的名称就方法名称都过长,所以被迭代器取代
Vector v=new Vector();
Enumeration en=v.elements();
while(en.hasMoreElements()){
System.out.println(en.nextElement());
}