`
liuxinglanyue
  • 浏览: 562638 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ArrayList源代码分析(总结)(转)

阅读更多

结合API文档和网上搜索来的ArrayList的特效来总结下:

API文档是如此介绍ArrayList的:

接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)

 Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差。

 

List允许有相同的元素

ArrayList的方法都没有同步,所以在多线程中是不安全的,必须自己同步

toArray()方法返回的是和原列表相同的对象,也就是说:
arrayList.toArray()[0]==arrayList.get(0)返回的是true(假定arrayList不空)。

clone()方法是一个浅拷贝。

API文档:

在添加大量元素前,应用程序可以使用 ensureCapacity 操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量
可以通过自己调用ensureCapacity()提高效率

创建同步线程的ArrayList

List list = Collections.synchronizedList(new ArrayList(...));

 

ArrayList提供了4种添加方法:

Java代码 
  1. list.add(e);  
  2. list.add(index, element);  
  3. list.addAll(c);  
  4. list.addAll(index, c);  

 每次添加都调用ensureCapacity()方法,扩大容量是每次是1.5倍

Java代码 
  1. list.set(index, element);  
  2. list.add(index, element);  

 set是用指定的元素替代此列表中指定位置上的元素

add是将指定的元素插入此列表中的指定位置。向右移动当前位于该位置的元素

 

对于新增和删除操作add和remove,ArrayList要移动数据。所以性能不是很好

而访问数据是直接根据数组下标来获得数据的,所以速度很快

 

 移除ArrayList内重复数据:

Java代码 
  1. public static void removeDuplicate(List arlList) {  
  2.     HashSet h = new HashSet(arlList);  
  3.     arlList.clear();  
  4.     arlList.addAll(h);  
  5. }  

 除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个 ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。   

分享到:
评论

相关推荐

    arrayList源代码

    ### ArrayList源代码解析 在Java集合框架中,`ArrayList`是一个非常重要的类,它实现了`List`接口,并提供了基于动态数组的数据结构。本篇将详细分析`ArrayList`的源码,帮助读者理解其内部实现机制。 #### 类定义...

    MP3的源代码

    ### MP3播放器源代码分析 #### 概述 该段源代码主要涉及一个基于Android平台的MP3播放器应用程序的实现。从标题“MP3的绿色源代码”及描述中可以看出,这是一个开源项目,目的是为了让其他开发者可以方便地学习、...

    Gallery3dD源代码(android4.0版原生)

    总结,通过对"Gallery3D"在Android 4.0版本的源代码分析,我们可以学习到高级的图像处理技术、高效的资源管理和优化策略,以及良好的用户交互设计。这对于任何希望在Android平台上开发高质量图像应用的开发者来说,...

    郝斌Java源代码下

    3. **集合框架**:在【86-88】和【92-94】源代码中,可能涉及到ArrayList、LinkedList、HashMap等集合类的使用,以及遍历、添加、删除元素的方法。集合框架是Java编程中频繁使用的工具,熟练掌握它们能帮助我们更...

    Java 数据结构与算法+源代码 高清版

    总结来说,这份“Java数据结构与算法+源代码高清版”资源涵盖了IT领域的基础核心知识,它可以帮助学习者或开发者从理论到实践全面掌握数据结构和算法,提升编程能力,为解决复杂问题打下坚实的基础。通过深入学习和...

    《JAVA程序设计教程》源代码

    此外,文件名称列表中提到的"《JAVA程序设计教程》源代码"很可能包含异常处理、输入/输出流、集合框架(如ArrayList、LinkedList、HashMap等)、线程编程和文件操作的相关示例。这些内容是Java应用程序开发中不可或...

    进销存管理系统java源代码

    总结来说,"进销存管理系统java源代码"是一个全面的商业应用,涉及到Java编程、Web开发框架、数据库操作、多线程、并发控制等多个IT领域的核心知识点,对于学习和理解企业级Java应用开发具有很高的参考价值。

    仓库管理系统JAVA源代码

    《仓库管理系统JAVA源代码解析与应用》 仓库管理系统是企业运营中的重要组成部分,它负责对库存物品进行跟踪、控制和管理,确保供应链的顺畅运行。本文将深入探讨一款基于JAVA语言开发的仓库管理系统,该系统以其...

    java源代码自己看吧,

    总结来说,这个压缩包可能是Java编程的实例,涵盖了基础到高级的Java概念,通过阅读和分析源代码,你可以提升对Java语言的理解,学习到实际开发中的技巧和最佳实践。记得仔细阅读`下载说明.txt`,遵循其中的指导进行...

    java实战开发源代码(原封未动)

    通过分析这些源代码,我们可以深入理解Java的实际应用,提高编程技巧,并能快速适应不同的项目需求。同时,源代码备份也是为了防止在开发过程中对代码造成不可逆的修改,确保随时可以回溯到原始状态。 "复件 src"这...

    C#俄罗斯方块源代码

    总结来说,C#语言的俄罗斯方块源代码是一个集成了C#基本语法、面向对象编程、Windows Forms应用、游戏逻辑、图形绘制以及状态管理等多个方面的综合实践案例。通过分析和学习这个源代码,初学者可以对C#编程有更深入...

    Java学生成绩管理系统源代码

    根据提供的文件信息,我们可以分析并总结出以下关键知识点: ### 1. 文件导入与处理 在文件开头,可以看到大量的Java包导入语句,这表明该系统利用了多种Java内置类来实现其功能。 - `java.io` 包下的类:如 `...

    画图程序源代码程序源代码

    #### 关键代码分析 1. **主类** `MyTestGeneric`: - 主方法 (`main`):创建并显示 `MyFrame99` 实例。 2. **子类** `MyFrame99` 继承自 `Frame`: - 构造函数:初始化绘图框架,并设置初始属性如背景颜色、窗口...

    Java进销存管理系统源代码

    总结而言,Java进销存管理系统源代码是学习企业级应用开发的宝贵资源,它涵盖了Java编程、数据库操作、GUI设计、权限控制等多个方面的技术。通过对这些源代码的学习和实践,开发者可以提升自己的综合能力,更好地...

    java疯狂讲义 源代码

    在学习这些源代码时,建议逐步分析每个类的功能,了解它们之间的关系,调试运行,查看输出结果,以加深理解。同时,结合设计模式的学习,思考在实际项目中如何应用这些模式来优化代码结构。这将有助于你成长为一名...

    Java6API源代码1

    分析Java 6 API的源代码可以帮助开发者深入理解Java的工作原理,了解类和方法的内部实现,从而提高编程效率和代码质量。例如,通过查看`ArrayList`或`HashMap`的源代码,可以学习到如何高效地实现动态数组和哈希表...

    java贪吃蛇源代码

    10. **源代码分析** 分析提供的“Snake”源代码文件,我们可以看到类的设计、方法的实现以及游戏逻辑的具体细节。通过阅读和理解源码,学习者可以加深对Java编程和游戏开发的理解。 总结,实现Java贪吃蛇游戏涉及...

    DataGridView分页控件标准版VB2008源代码及DataGridView178页详细使用说明

    三、源代码分析 提供的源代码示例展示了如何在VB2008中集成分页功能,包括数据加载、分页逻辑处理、用户交互等环节。通过对源代码的学习,开发者可以了解分页控件的具体实现过程,为自己的项目提供参考。 四、详细...

    JAVA课程设计(含源代码源程序以及论文)

    通过阅读和分析源代码,你可以了解如何使用面向对象的设计原则,如封装、继承和多态,来构建模块化的应用程序。此外,你会看到如何利用Java的API库,如集合框架、IO流和网络编程接口,来处理数据和实现特定功能。 ...

    张孝祥老师基础加强源代码和ppt

    《张孝祥老师基础加强源代码和PPT》是一份珍贵的教育资源,源自著名IT教育专家张孝祥老师的教学资料。这份资料集包含了张孝祥老师2009年精心录制的Java高新技术视频课程,旨在为学习者提供深入浅出的基础加强教程,...

Global site tag (gtag.js) - Google Analytics