Java进阶(容器)
来源:互联网 发布:现代言情推荐 知乎 编辑:程序博客网 时间:2024/05/20 08:24
数组是一种容器,简单的说能装东西的就是容器,但Java中除了数组以外还有各种各样的容器。
现实中存在这么一种情况,例如写一个人事管理系统的时候,想用数组才存公司所有员工的信息,可是数组一旦分配就不能再扩展,若公司又增加几个员工,一切就将变得繁琐了。所以Java提供这么一种“容器”,如果不超过内存,它就让你继续存,怎么存让它自己去实现。
在Java的Util包中提供着大量的容器,实际上就是一大堆数据结构,提供给你适当的存放数据。
左边的容器是一个一个往里装,右边的Map是一对一对往里装。
Collection:Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
现实中存在这么一种情况,例如写一个人事管理系统的时候,想用数组才存公司所有员工的信息,可是数组一旦分配就不能再扩展,若公司又增加几个员工,一切就将变得繁琐了。所以Java提供这么一种“容器”,如果不超过内存,它就让你继续存,怎么存让它自己去实现。
在Java的Util包中提供着大量的容器,实际上就是一大堆数据结构,提供给你适当的存放数据。
左边的容器是一个一个往里装,右边的Map是一对一对往里装。
Collection:Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个 Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。
List接口:
List接口:
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。
和下面要提到的Set不同,List允许有相同的元素。
除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个 ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。
实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。
Set接口:
Set接口:
Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。
很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。
请注意:必须小心操作可变对象(Mutable Object)。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。
这里有篇详细的文章:http://www.cnblogs.com/sunliming/archive/2011/04/05/2005957.html
0 0
- Java进阶(容器)
- Java进阶篇--容器(一)
- Java进阶篇--容器(二)
- Java进阶06 容器
- Java进阶06 容器
- Java进阶06 容器
- Java进阶06 容器
- Java进阶06 容器
- Java进阶篇——容器(三)
- JAVA进阶5.2——JFrame容器
- JAVA进阶 面向对象程序设计——第3周 对象容器(数据存放)
- 进阶篇_vector容器
- java容器(一)
- Java(三)--容器
- java容器(一)
- java容器(一)
- java容器(二)
- Java容器(List)
- Java进阶(File类)
- 猎人与猎狗的故事
- 【bzoj1208】[HNOI2004]宠物收养所 Splay
- JAVA HTTP POST参数为一个对象或数组
- 从头认识java-12.2 Class对象(3)-.class
- Java进阶(容器)
- web项目中路径的获取和遇到问题的解决方法
- lesson1 ODE的几何解法:方向场,积分曲线
- Java进阶(I/O系统)
- 深入浅出RxJava(基础篇)
- UML用例图中包含(include)、扩展(extend)和泛化(generalization)三种关系详解
- Hashtable 与HashMap 的区别
- HDU 4325&& nyoj 600 Flowers【线段树+坐标离散化】
- (NO.00004)iOS实现打砖块游戏(十五):导弹发射道具的实现(上)