Java暑期学习Day35
今天是第三十五天,还是要抽空学习编写小游戏{:10_302:},愿灾区人民安好static/image/hrline/2.gif
①Collection架构
1.收集对象的行为,像是新增对象的add()方法,移除对象的remove()方法等,都是定义在java.util.Collection中。
既可以收集对象,也能逐一取得对象,这就是java.lang.Iterable定义的行为,它定义了iterator()方法返回java.util.Iterator操作对象,可以让人逐一取得收集的对象。
2.收集对象的共同行为定义在Collection中,但因为收集对象有不同的需求,所以接口也不同。
想要收集时记录每个对象的索引顺序,并可依索引取回对象,这样的行为定义在java.util.List接口中。
想要收集的对象不重复,具有集合的行为,……java.util.Set……
想要收集对象时以队列方式,收集的对象加入至尾端,取得对象时从前端,……java.util.Queue……
想要对Queue两端进行加入、移除等操作,……java.util.Deque……
②API之Collection
public interface Collection<E>extends Iterable<E>
1.Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
JDK 不提供此接口的任何直接实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。
包 (bag) 或多集合 (multiset)(可能包含重复元素的无序 collection)应该直接实现此接口。
2.所有通用的 Collection 实现类(通常通过它的一个子接口间接实现 Collection)应该提供两个“标准”构造方法:
一个是 void(无参数)构造方法,用于创建空 collection;
另一个是带有 Collection 类型单参数的构造方法,用于创建一个具有与其参数相同元素新的 collection。
实际上,后者允许用户复制任何 collection,以生成所需实现类型的一个等效 collection。尽管无法强制执行此约定(因为接口不能包含构造方法),但是 Java 平台库中所有通用的 Collection 实现都遵从它。
3.此接口中包含的“破坏性”方法,是指可修改其所操作的 collection 的那些方法,如果此 collection 不支持该操作,则指定这些方法抛出 UnsupportedOperationException。如果是这样,那么在调用对该 collection 无效时,这些方法可能,但并不一定抛出 UnsupportedOperationException。例如,如果要添加的 collection 为空且不可修改,则对该 collection 调用 addAll(Collection) 方法时,可能但并不一定抛出异常。
③List容器的特点
1.List容器是有序的collection(也称为序列)。此接口的用户可以对List容器中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。List容器允许插入重复的值,包括null。
2.最常用的两个List接口的实现类是ArrayList和LinkedList。
a ArrayList---动态数组
b ArrayList类扩展AbstractList并实现了List接口
c 支持可随需求增长的动态数组(
在ArrayList内部数组长度不够时,会建立新的数组,并将旧数组的参考指定给新数组,这会耗费时间和内存。
ArrayList有个可指定容量(Capacity)的构造函数。如果大致知道要收集的对象范围,事先建立足够长度的内部数组,可以节省成本。)
d ArrayList构造方法
ArrayList()
ArrayList(Collection c)
ArrayList(int capacity)
e 除了继承的构造方法外,ArrayList的常用方法
E get(int index) 返回此列表中指定位置上的元素
int indexOf(Object o) 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回-1
页:
[1]