JAVA编程思想学习(十一章)持有对象

JAVA 容器类的用途是 "保存对象" 并将其划分为两个不一样的概念:编程

1)Collection,一个独立元素的序列  List  Set  Queue设计模式

2)Map 键值对数组

 

用数组转出来的List,由于底层仍是个数组他有长度限制!并发

 

添加元素时,Collection 会根据不一样的实现 调用 equals()spa

 

迭代器是一种设计模式,对于不一样的容器使用一样的方式去迭代元素设计

Iterator只能单向移动:并随时准备好返回序列的第一个元素对象

1) next()排序

2) hasNext()队列

3) remove()element

ListIterrator 是一个更增强大的Iterator,能够双向移动,能够指向当前位置的前一个后后一个元素,可是只能用于List的访问

 

 ArrayList:擅长随即访问

 LinkedList: 擅长指定位置插入和删除,但在随即访问上要逊色一些

   Stack 栈  一般是指"后进先出"LIFO 的容器,由于最后"压入"栈的元素,第一个"弹出"栈,LinkedList具备可以直接实现栈的全部功能的方法,所以能够直接将LinkedList做为栈使用,

 

 

Set :

HashSet :无序的Set

TreeSet 自动排序的Set

LinkedHashSet 带链表的Set

 

Queue 队列是一个典型的先进先出FIFO容器,一端放入另外一端取出,放入容器的顺序与取出的顺序相同,在并发编程中至关重要.

LinkedList能够用做Queue的一种实现,LinkedList能够向上转型为Queue

queue.offer()将一个元素插入到队尾

queue.peek() 和 element()方法 都将在不移除的状况下返回队头,但Peek()在队列为空时返回null ,

element()会抛出noSuchElementException

poll() 和remove() 移除并返回队头,区别队列为空一个null,一个异常

 

PriorityQueue 优先级队列, 好比在飞机场,当飞机临近起飞时,这架飞机的乘客能够在办理登记手续时排到队头,若是是一个消息系统那么,某些消息比其余消息更重要,于是须要排到队头

 Vector,hashTable,Stack 已被淘汰

 

相关文章
相关标签/搜索