Java 队列 queue的一些操作,
add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常
remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
offer 添加一个元素并返回true 如果队列已满,则返回false
poll 移除并返问队列头部的元素 如果队列为空,则返回null
peek 返回队列头部的元素 如果队列为空,则返回null
put 添加一个元素 如果队列满,则阻塞
take 移除并返回队列头部的元素 如果队列为空,则阻塞
import java.util.Queue;//先进先出的辅助队列
import java.util.LinkedList;
Queue queue = new LinkedList();
是List接口的集合,可以根据索引值随意访问list中的元素。还实现了Deque接口(Queue的子接口,代表双向队列),Deque中也定义了一些双向操作队列的方法。 还可以用作栈,因为有 pop()和 push() 两个方法。
是标准的队列实现类(但并不标准),PriorityQueue保存队列元素的顺序并不是按加入队列的顺序,而是按队列元素的大小进行重新排序。当调用peek方法 或者poll方法来取出队列中的元素时,并不是取出最先进入队列的元素,而是取出队列中最小的元素。
事实上,PriorityQueue类已经违反了队列,先入先出的基本原则。PriorityQueue不允许插入null元素,它还需要对队列元素进行排序,队列元素有两种排序方式:自然排序、定制排序;
List接口
ArrayList, LinkedList ,Vector是List接口实现的一个类。接口不可以被构造(不可实例化),但是可以为接口创建一个指向自己的对象引用。
List是继承于Collection接口,除了Collection通用的方法以外,扩展了部分只属于List的方法。
ArrayList是List接口的一个实现类,是动态数组的类,可以灵活设置数组的大小。查询快,中间插入、删除元素很慢。
import java.util.ArrayList;
ArrayList List = new ArrayList();
List
list.add("保护环境"); //向列表中添加数据
ArrayLista;ArrayList b;a.addAll(b); //将两个Array 合并到一个;
ArrayList res =
new
ArrayList() ;
HashSet set =
new
HashSet();
{......}
res.addAll(set);
Collections.sort(res);
ArrayList的一些操作(类中固有定义的几种方法)
add(element); // ArrayList中增加函数,将元素放在list的末尾。
set(index,element);//会先做index检查,然后将index位置替换为element,并返回原来index出的对象。 get(index); //先做index是否越界检查,然后返回index处的对象。 remove(index); //去掉index 位置的对象,在方法中还有 后面对象前移的过程,所以说效率会打折扣(无法确定数组大小时,才用这个,因为数组扩容会大大影响此类的效率)
每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组,在这个临界点的扩容操作,应该来说是比较影响效率的。
ArrayList 的初始化
执行new 关键字时,在堆内存开辟了一块空间。【常量池位于方法区,方法区位于堆内存】
构造函数的底层是Object[] 数组,该数组可以存放任何对象(参考 http://www.importnew.com/27075.html)