• 集合基本知识


    Java中,如果一个Java对象可以在内部持有若干其他Java对象,并对外提供访问接口,我们把这种Java对象称为集合,故Java的数组也可以看作是一种集合。集合的原因有两个:一、数组初始化后大小不可变;二、数组只能按索引顺序存取

    集合总体框架

    Java 集合框架为不同类型的集合定义了大量接口,集合有两个基本接口:Collection 和 Map。

    Collection

    Java标准库自带的java.util包提供了集合类:Collection,它是除Map外所有其他集合类的根接口。Java实现的集合类主要有两个特点,一是实现了接口和实现类相分离,例如,有序表的接口是List,具体的实现类有ArrayList,LinkedList等,二是支持泛型,我们可以限制在一个集合中只能放入同一种数据类型的元素,最后,Java访问集合总是通过迭代器(Iterator)来实现,它最明显的好处在于无需知道集合内部元素是按什么方式存储的。Java的java.util包主要提供了以下三种类型的集合:

    List:一种有序列表的集合

    Set:一种保证没有重复元素的集合

    Map:一种通过键值(key-value)查找的映射表集合

    此外,由于历史原因,有小部分集合已经不推荐使用了,但是又不能直接从包中删除,因为可能会影响别的基础包,例如:

    Hashtable:一种线程安全的Map实现;

    Vector:一种线程安全的List实现;

    Stack:基于Vector实现的LIFO的栈;

    为什么不推荐使用呢,线程安全但是性能不佳,重点是这是最初的实现,现在已被java.util.concurrent包里的集合代替了,还有不推荐使用的接口Enumeration<E>:已被Iterator取代,还有一个小细节:链表与泛型集合之间有一个重要的区别,链表是一个有序集合(ordered collection), 每个对象的位置十分重要。

    List

    在集合类中,List是最基础的一种集合:它是一种有序列表。List的行为和数组几乎完全相同,放入元素的先后顺序存放,每个元素都可以通过索引确定自己的位置,List的索引和数组一样,从0开始。也正是因为这些特性,所以List集合也是用的最多的集合;主要接口有:

    在末尾添加一个元素:void add(E e)

    在指定索引添加一个元素:void add(int index, E e)

    删除指定索引的元素:int remove(int index)

    删除某个元素:int remove(Object e)

    获取指定索引的元素:E get(int index)

    获取链表大小(包含元素的个数):int size()

    List接口有两种实现,一种通过数组实现的ArrayLIst,还有一种是通过链表实现的LinkedList,主要区别是:

    通常选用ArrayList集合,需要经常查找可用ArrayList集合,经常增删就用LinkedList集合

    List的特点

    List接口允许我们添加重复的元素

    允许添加null

    List的遍历

    我们可以用用for循环根据索引配合get(int)方法遍历,但是不推荐这么使用,原因有两个,一是代码复杂,二是因为get(int)方法只有ArrayList的实现是高效的,换成LinkedList后,索引越大,访问速度越慢。所以,遍历List集合一定要用迭代器Iterator!

    欢迎大家批评指正,指出问题,谢谢!

  • 相关阅读:
    外部编辑Infopath的表单模板(xsn)
    安装SQL Server 2008时可能遇到性能计数器不一致的情况
    Windows应用程序中使用Windows验证方式要注意的地方
    在MOSS 2007中使用Web Capture这个WebPart
    MOSS 配置SSO的时候可能遇到"您没有执行此操作的权限"的错误
    基于Web的操作系统,是否有可能?
    ASP.NET 中对于异常的处理
    在读取站点地图时自动应用安全设置
    JavaScript中的Window窗口对象【转载】
    当动态TSQL语句遇到除零的问题
  • 原文地址:https://www.cnblogs.com/yhcTACK/p/15395326.html
Copyright © 2020-2023  润新知