您的位置:首页 > 编程语言 > Java开发

java-容器

2015-08-27 20:07 344 查看
Java API所提供的一系列类的实例,用于在程序中存放对象。

【容器API】

一、JDK所提供的容器API位于java.util包里。

二、容器API的类图结构如下面所示:

1、<<i
b3e8
nterface>>Collection :<<interface>>Set和<<interface>>List。Collection接口定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式。

1)、Set中的数据对象没有顺序且不可重复。

<<interface>>Set:HashSet。

2)、List中的数据对象有顺序且可重复。

<<interface>>List:LinkedList和ArrayLiat。

2、Map接口定义了存储“键(key)——值(value)映射对”的方法。

<<interface>>Map:HashMap。

三、Collection方法举例

1、容器类对象在调用remove、contains等方法时需要比较对象是否相等,这会涉及到对象类型的equals方法和hashcode方法。

2、对于自定义的类型,需要重写equals和hashcode方法以实现自定义的对象相等规则。

注意:相等的对象应具有相等的hashcode!!!!

四、如何选择数据接口

1、Array读快改慢。

2、Linked改快读慢。

3、Hash两者之间。

【Iterator接口】

1、所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象。

2、Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作。

3、Iterator接口定义如下:

boolean hasNext() ;//判断游标右边是否有元素

Object next() ;//返回游标右边的元素,并将游标移动到下一位置

void remove() ;//删除游标左边的元素,在执行完next之后该操作只能执行一次

在使用Iterator时,不能使用容器自身的remove方法(因为资源被lock住了)!!!

【增强for循环】

1、增强的for循环对于遍历Array或Collection的时候相当简便。

2、缺点:

1)、数组:不能方便的访问下标值。

2)、集合:与使用Iterator相比,不能方便删除集合中的内容

3、总结

除了简单遍历并读出其中的内容外,不建议使用增强for.

范例:

int[] s = {1, 5, 7};

for(int i: s){

.........

}

【Set接口】

1、Set接口是Collection的子接口,Set接口没有提供额外的方法,但实现Set接口的容器类中的元素是没有顺序的,且不可重复的。

2、Set容器可以与数学中“集合”的概念相对应。

3、API中所提供的容器类有HashSet、TreeSet等。

【List接口】

1、List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,且可以重复的。

2、List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可根据序号存取容器中的元素。

3、JDK所提供的List容器类有ArrayList和LinkedList等。

【Collections类】

类java.util.Collections提供了一些静态方法实现了基于Collection容和Map容器的一些常用算法。

【Comparable接口】

1、所有可以“排序”的类都实现了java.lang.Comparable接口,Comparable接口中只有一个方法public int compareTo(Object obj)。

2、实现了Comparable接口的类通过实现compareTo方法从而确定该类对象的排序方式。

【Map接口】

1、实现Map接口的类用来存储键(key)——值(value)对。

2、Map接口的实现类有HashMap和TreeMap等。

3、Map类中存储的键——值用来通过键来标识,所以键不能重复!!!!(用equals方法,比较Hashcode)

【Auto-boxing/unboxing】

在合适的时机自动打包、解包,自动将基础类型转换为对象,自动将对象转换为基础类型。

【泛型】

1、起因

JDK1.4以前类型不明确。

1)、装入集合的类型都被当作Object对待,从而失去自己的实际类型。

2)、从集合中取出时往往需要转型,效率低,容易产生错误。

2、解决方法

1)、在定义集合的时候同时定义集合对象的类型。

2)、可在定义Collection时指定,也可在定义Iterator时指定。

3、好处

增强程序的可读性和稳定性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: