- Map
Map是键值对,键Key是唯一不能重复的,一个键对应一个值,值可以重复。
TreeMap可以保证顺序,HashMap不保证顺序,即为无序的。
Map中可以将Key和Value单独抽取出来,其中KeySet()方法可以将所有的keys抽取正一个Set。而Values()方法可以将map中所有的values抽取成一个集合。
- Set
不包含重复元素的集合,set中最多包含一个null元素
只能用Lterator实现单项遍历,Set中没有同步方法。
- List
有序的可重复集合。
可以在任意位置增加删除元素。
用Iterator实现单向遍历,也可用ListIterator实现双向遍历
- Queue
Queue遵从先进先出原则。
使用时尽量避免add()和remove()方法,而是使用offer()来添加元素,使用poll()来移除元素,它的优点是可以通过返回值来判断是否成功。
LinkedList实现了Queue接口。
Queue通常不允许插入null元素。
-
Stack
Stack遵从后进先出原则。
Stack继承自Vector。
它通过五个操作对类Vector进行扩展,允许将向量视为堆栈,它提供了通常的push和pop操作,以及取堆栈顶点的peek()方法、测试堆栈是否为空的empty方法等
用法
如果涉及堆栈,队列等操作,建议使用List
对于快速插入和删除元素的,建议使用LinkedList
如果需要快速随机访问元素的,建议使用ArrayList
资料引自:http://blog.csdn.net/oLaoHuBuChiRen1/article/details/51127151
queue与deque的区别
queue (先进先出) deque(双端队列)
头文件 #include <queue> #include <deque>
定义 queue<double> q; deque<double> q;
访问队列中的元素个数 q.size() q.size()
判断队列空 q.empty() q.empty()
尾部压入新元素 q.push(x) q.push_back(x)
头部压入新元素 EOF q.push_front(x)
弹出队列的第一个元素 q.pop() q.pop_front()
弹出队列的最后一个元素 EOF q.pop_back()
访问队首元素 q.front() q.begin()
访问队尾元素 q.back() q.end()
删除所有元素 EOF q.clear()
删除任意位置x EOF q .erase(q.begin() + x)
stack用法:
stack(后进先出)
s.push(x); 入栈
s.pop(); 出栈
s.top(); 访问栈顶元素
s.empty(); 判断栈空
s.size(); 访问栈中元素个数
list
begin()和end() 访问头尾
push_back()和push_front() 插入头尾
empty() 辨是否空
clear() 清除链表
front()和back() 弹出头尾
pop_back()和pop_front() 删除头尾
swap() 交换链表
reverse() 逆置链表 reverse(b.begin(),b.end());
merge() 清空置换 a.merge(b); //b变为空,a中元素包含原来a和b的元素
insert() 指定插入 a.insert(a.begin(),b.begin(), b.end()); //在a的开始位置插入 b从开始到结束所有元素
erase() 指定删除 a.erase(a.begin(),a.end());
//将a的从begin()到 end() 之 间 的 元 素删除
remove() 删除元素 a.remove(7); //删除a中所有值为7的元素
assign() (1)a.assign(n, val):将a中的所有元素替换成n个val元素
list<int>b{1,2,3,4,5}; //注意语法错误
b.assign(5,10); b中的元素变为10, 10, 10, 10, 10
(2)a.assign(b.begin(), b.end())
list<int>a{6,7,8,9};
list<int>b{1,2,3,4,5};
b.assign(a.begin(),a.end());
b中的元素变为6,7,8,9
resize() //调用resize(n)将list的长度改为只容纳n个元素,超出的元素将被删除。如果n比list原来的长度长,那么默认超出的部分元素置为0。也可以用resize(n, m)的方式将超出的部分赋值为m。
remove_if() 你猜~
本文大致介绍queue、deque、stack、 list用法区别,若有错误请联系博主更改