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、好处
增强程序的可读性和稳定性。
- Java容器:容器一览
- Java容器
- Java容器
- java容器
- java容器
- Java容器
- java容器
- JAVA容器
- JAVA 容器
- java 容器
- java容器
- java容器
- java容器
- JAVA容器
- java容器
- java 容器
- java容器
- JAVA 容器
- python copy and deeepcopy
- HTTPS 是怎么加密的
- ural 2034. Caravans
- PAT Basic level practice 16
- 设计模式实践(一)单例模式(Singleton)
- java-容器
- 【Unity】Unity3D在Android平台使用嵌入式数据库Sqlite,解决无法找到数据库文件的问题
- ligerUI form表单里的filed的类型根据另外个filed的值改变而改变
- android 休眠唤醒机制分析(二)
- Toast和Dialog
- 第6章 系统数据文件和信息
- 3172 Virtual Friends【并查集】
- 深入GridView、Toast的用法、AlertDialog
- 分类算法之朴素贝叶斯分类(Naive Bayesian classification)