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

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

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

2)Map 键值对

用数据转出来的List,因为底层还是个数组他有长度限制!

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

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

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

1) next()

2) hasNext()

3) remove()

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 已被淘汰

猜你喜欢

转载自my.oschina.net/u/3018126/blog/1806363