这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战
Java集合类:list、set、queue、map、stack的特点与用法?
Map
Map是键值对,键Key是微一不能重复的,一个键对应一个值,值可以重复。
TreeMap可以保证顺序,HashMap不保证顺序,即为无序的,Map中可以将Key和Value单独抽取出来,其中KeySet()方法可以将所有的Keys抽取成一个Set,而Values()方法可以将map中所有的values抽取成一个集合。
Set
不包含重复元素的集合,set中最多包含一个null的元素,只能与Tterator实现单项遍历,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。
其他
ArrayList和Vertor都是使用数组方式储存数据,此数组元素数大于实际储存的数据以便增加和插入元素,他们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了双向链表实现储存,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。