java-容器

来源:互联网 发布:c语言原子锁 编辑:程序博客网 时间:2024/05/18 20:04


Java API所提供的一系列类的实例,用于在程序中存放对象。



【容器API】

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

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

1、<<interface>>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、好处

增强程序的可读性和稳定性。


















0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 硫酸铬钾中毒怎么办 门锁能扭动却打不开怎么办 防盗门保险坏了怎么办 厦门工会卡过期怎么办 阴雨天被子受潮怎么办 衣服晾臭了怎么办 喷砂机油水分离泵有油怎么办 水太烫玻璃瓶盖打不开怎么办 玻璃罐的玻璃盖打不开怎么办? 开红酒没有开瓶器怎么办 手机卡突然坏了怎么办 滚筒洗衣机打不开门怎么办 全自动洗衣机门开不开怎么办 好期待评分不足怎么办 单片机数码管亮度低怎么办 猫的同轴灯不亮怎么办 楼下邻居太吵怎么办 冰箱冷却液内露怎么办 冷却水没有了会怎么办 金立m7信号不好怎么办 csgo凉了饰品怎么办 模型拟合度低怎么办 石膏线用发泡胶怎么办 电表上显示err10怎么办 电表显示欠压怎么办 tcl电视遥控器失灵怎么办 玩具汽车遥控器失灵怎么办 玩具车遥控丢了怎么办 按压扣坏了怎么办 电脑用不了鼠标怎么办 多肉上的肉虫子怎么办 警察被取消警衔怎么办 隐形眼镜带歪了怎么办 gta5正在加载慢怎么办 gta5线上卡住了怎么办 皮子掉的颜色怎么办 gta5死了之后车怎么办 潜水口里有水怎么办 800度近视潜水怎么办 不会游泳深潜怎么办 高度近视浮潜怎么办