LinkedList解读

LinkedList一样实现了list接口但是和ArrayList又有所不同。下边先解读一下LinkedList

实习了List接口,就有了add,remove等方法具体参考ArrayList。但是LinkedList还实现了Deque接口,双向链表结构,这是链表结构的根本,下边上代码,展示其用法。

package collection;
 
import java.util.LinkedList;
 
import charactor.User;
 
public class TestCollection {
 
    public static void main(String[] args) {
         
        //LinkedList是一个双向链表结构的list
        LinkedList<User> ll =new LinkedList<User>();
         
        //可以很方便的在头部和尾部插入数据
        //在尾部插入新的元素
        ll.addLast(new User("User1"));
        ll.addLast(new User("User2"));
        ll.addLast(new User("User3"));
        System.out.println(ll);
         
        //在头部插入新的元素
        ll.addFirst(new User("UserX"));
        System.out.println(ll);
         
        //查看头部的元素
        System.out.println(ll.getFirst());
        //查看尾部的元素
        System.out.println(ll.getLast());
         
        //查看不会导致元素被删除
        System.out.println(ll);
        //取出头部的元素
        System.out.println(ll.removeFirst());
         
        //取出尾部的元素
        System.out.println(ll.removeLast());
         
        //取出会导致元素被删除
        System.out.println(ll);
    }
      
}

不仅实现了List和Deque,还实现了接口Queue(先进先出的队列)。

offer:在尾部添加元素

poll:取出头部的元素

peek:查看头部的元素

代码如下:

package collection;
  
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
  
import charactor.User;
  
public class TestCollection {
  
    public static void main(String[] args) {
        
        
        //Queue代表FIFO 先进先出的队列
        Queue<User> q= new LinkedList<User>();
          
        //加在队列的最后面
        System.out.print("初始化队列:\t");
        q.offer(new User("User1"));
        q.offer(new User("User2"));
        q.offer(new User("User3"));
        q.offer(new User("User4"));
          
        System.out.println(q);
        System.out.print("把第一个元素取poll()出来:\t");
        //取出第一个User
        User h = q.poll();
        System.out.println(h);
        System.out.print("取出第一个元素之后的队列:\t");
        System.out.println(q);
          
        //把第一个拿出来看一看,但是不取出来
        h=q.peek();
        System.out.print("查看peek()第一个元素:\t");
        System.out.println(h);
        System.out.print("查看并不会导致第一个元素被取出来:\t");
        System.out.println(q);
          
    }
       
}

链表结构定位查询很慢,需要从头慢慢执行直到找到目标,但是增删的时候只需要改动增删位置两边的数据就可以了。

ArrayList相反,因为元素都有下标所以定位查询快,而只要改动其中的元素就需要改动目标元素后边所有的元素,所以增删是慢的。

总结起来LinkedList是增删快,查询慢

LinkedList是增删慢,查询快。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值