一、容器类
1.概念
容器是Java提供的一些数据结构,容器类是Java类库中提供的用于管理对象集合的类。其中存放的均为对象的引用。
2.功能
1.持有、操作对象
2.自动完成容量的变化
3.Java容器类的框架
二、Collection接口
1.提供的方法
2.面向接口编程
使用容器类时定义为接口类型,初始化为具体的容器类类型,如果要修改具体的接口实现类,只需要改变创建对象的代码。
三、List接口
1.概念与特点
Collection接口的子接口
实现该接口的类的元素有序,可重复
2.主要实现方法
3.使用泛型实现
如:
可以限定为只能放String。
如果不用泛型,放进去是Object,取出来也是Object,有时要强制类型转换。
4.Vector实现类
与ArrayList一样,但是线程安全,可以同步,运行效率低。
它其实比List出现的早,有一套自己的方法
不建议使用
5.Stack实现类
是Vector子类,当然也实现了List,但注意不要使用非栈的方法,要保持栈的特点。
主要方法:
四、Queue接口
1.描述
一种先进先出的容器
2.主要方法
3.LinkedLIst实现类
五、set接口
1.描述
Collection接口子接口,并无额外方法,是为了表现不同的行为(继承于多态思想的典型应用)。
2.HashSet实现类
已经重写了equals的情况下:
为什么第一个例子中两个Student对象都放进去了?第二个例子中没有删除成功?
或者说Set是怎么判断两对象相同的?
3.hashCode
一个类要实现hashCode,必须和equals一起实现,关系如下:
Hash相关容器判断两个对象流程:
具体实现:
4.TreeSet实现类
主要是有序了
排序规则(Comparable,Comparator)
那么它只能接受实现了Comparable接口的类的对象(自然排序,继承Comparable接口,在类内重写compareTo),或者在构造时传入实现了Comparator< E >接口的类对象形参。(定制排序,新建一个继承Comparatoe接口的类,实现compare方法)
此处整理一下两个排序方法:
以之前写过的teacher类排序为例。
六、Map接口
1.描述
2.HashMap实现类
常用方法:
3.Hashtable实现类
与HashMap一样,也是线程问题,它是线程安全的,效率低,比较老
4.Properties实现类
七、迭代器
1.描述
不是容器,实现对容器的遍历,可以以统一的方式遍历对象。
2.主要方法
3.Iterator实现类
首先,每个Collection实现类都有iterator()方法,返回实现了iterator接口的对象。(每个实现类这个对象都不一样,可以用.getClass().getName()输出看一看
)这个对象可以实现对具体容器类的迭代,具体实现不用关心。
向前遍历举例:
删除元素举例:
使用类的删除方法可能发生异常。
增强版的for循环:
缺点:对于数组,不方便访问下标,对于Collection,不方便删除,所以除了简单遍历,一般不用。
4.ListIterator实现类
描述
Iterator子类型,可双向遍历。
创建方法
双向循环举例:
只适合与List接口
5.Enumeration接口
只遍历Vector和HashTable,不支持删除,也是历史问题。
八、其他实用类
1.Collections类
提供List容器静态方法。
2.Arrays类
实现数组元素的一些方法。