【Java】List常用类,ArrayList与Array区别,Queue的用法
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 返回空指针异常而不是返回’[ ]’
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
