【Java】List常用类,ArrayList与Array区别,Queue的用法

ArrayList & LinkedList

ArrayList & LinkedList

List接口常用类

ArrayList :数组方式来实现针对快速随机查询的需求,使用ArrayList执行效率较好(数组特性:便于索引快速定位对象位置)
LinkedList :双向链表存储,链表方式来实现List接口进行插入删除等操作效率更高,适合用来实现Stack(堆栈)和Queue(队列)(链表特性:插入删除效率高)
Vector:与ArrayList相同,数组方式存储数据;由于使用与synchronized方法-线程安全,所以性能上比ArrayList要差

注: LinkedList的特有方法(本身定义的方法)如:addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast()等,若需要使用队列特性,由于LinkedList也实现了java.util.Queue接口,所以可以直接使用LinkedList的实例来实现

public class QueueDemo{
  public static void main(String[] args){
    //父类引用queue指向子类对象
    Queue<String> queue = new LinkedList<String>();
    queue.offer("Hello!");
    queue.offer("hotch");
    String ele = null;
    while((ele=queue.poll())!=null)
       System.out.println(ele+"\t");
    }
}

Queue特性

队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。
LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
在二叉树和图的遍历中需要借助队列实现非递归遍历方法
如:非递归方法实现层次遍历

public static void levelOrder(TreeNode node){
    if (node==null) {
        return;
    }
    //借助队列实现
    Queue<TreeNode> queue = new LinkedList<TreeNode>();//java中队列(Queue)的用法:LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用
    queue.offer(node);
    while (!queue.isEmpty()){
        TreeNode temp = queue.poll();//不推荐用add()和remove()
        System.out.print(temp.val+" ");
        if(temp.left != null)
            queue.offer(temp.left);
        if (temp.right != null)
            queue.offer(temp.right);
    }
}

数组(Array)和列表(ArrayList)的区别

  • Array可以包含基本数据类型和对象类型,ArrayList只能包含对象类型
  • Array大小是固定的,ArrayList的大小是动态变化的
  • ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等

Queue常用方法

offer(E e)、add(E e)插入;poll()、remove()移除;peek()获取顶端元素
一般情况下建议使用offer()、poll()、peek()方法,因为可通过返回值判断操作成功与否,不建议使用add()和remove()方法。

补充学习点

JAVA中Queue的使用
ArrayList & null 返回空指针异常而不是返回’[ ]’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值