第九章: 持有对象

如果一个程序只包含固定数量得且其生命期都是已知得对象,那么这是一个非常简单的程序。

如果一个类没有显式地声明继承哪个类,那么它自动地继承自Object。

 

1.Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念:

1) Collection。一个独立元素的序列,这些元素都服从一条或多条规则。List必须按照插入的顺序保存元素,而Set不能有重复元素。Queue按照队列规则来确定对象产生的顺序。

2) Map。一组成对的键值对对象,允许你使用键来查找值。

 

 

Arrays.asList()方法接受一个数组或是一个用逗号分隔的元素列表(使用可变参数),并将其转换成一个List对象。Collections.addAll()方法接受一个Collection对象,以及一个数组或是一个用逗号分割的列表,将元素添加到Collection中。

例如:

HashSet、TreeSet和LinkedHashSet都是Set类型,其中HashSet是最快的获取元素方式,TreeSet是按照比较结果的升序保存对象,LinkedHashSet是按照被添加的顺序保存对象。

HashMap、TreeMap和LinkedHashMap都是Map类型,与HashSet一样,HashMap也提供了最快的查找技术,也没有按照任何明显的顺序来保存其元素。TreeMap按照比较结果的升序保存键,而LinkedHashMap则按照插入顺序保存键,同时还保留了HashMap的查询速度。

 

2.迭代器:

迭代器(也是一种设计模式)是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不必知道或关心该序列底层的结构。

在Java中Iterator()只能单向移动,这个Iterator只能用来:

1) 使用方法iterator()要求容器返回一个Interator。Interator将准备好返回序列的第一个元素。

2) 使用next()获得序列中的下一个元素。

3) 使用hasNext()检查序列中是否还有元素。

4) 使用remove()将迭代器新近返回的元素删除。

 

3.Queue:

队列是一个典型的先进先出的容器。offer( )方法是与Queue相关的方法之一,它在允许的情况下,将一个元素插入到队尾,或者返回false。peek()和element()都将在不移除的情况下返回队头,但是peek()方法在队列为空时返回null,而element()会抛出异常。poll()和remove()方法将移除并返回队头,但是poll()在队列为空时返回null,而remove()会抛出异常。

 

posted @ 2020-02-09 19:51  fish大叔  阅读(92)  评论(0编辑  收藏  举报