LinkedList:底层使用的链表数据结构

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());

}

猜你喜欢

转载自blog.csdn.net/weixin_44548366/article/details/90034257
今日推荐