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。 
  所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个 Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。

    List接口:
    List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。 
和下面要提到的Set不同,List允许有相同的元素。 
    除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个 ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。 
    实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。

    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
原创粉丝点击