Collection
........|--------List
........|..........|----------ArrayList
........|..........|----------Vector
........|..........|.............|-----Stack
........|..........|----------LinkedList
........|--------Set
...................|----------HashSet.
...................|.............|-----LinkedHashSet
...................|----------SortedSet
.................................|-----TreeSet
Iterator
.....|-------ListIterator
Map
.....|------Hashtable
.....|..........|------Properties
.....|------HashMap
.....|..........|------LinkedHashMap
.....|------WeakHashMap
.....|------SortedMap
................|------TreeMap
Collection.
●..实现该接口及其子接口的所有类都可应用clone()方法,并是序列化类.
1......List.
.....●..可随机访问包含的元素
.....●..元素是有序的
.....●..可在任意位置增、删元素
.....●..不管访问多少次,元素位置不变
.....●..允许重复元素
.....●..用Iterator实现单向遍历,也可用ListIterator实现双向遍历
..........ArrayList
..........●..用数组作为根本的数据结构来实现List
..........●..元素顺序存储
..........●..新增元素改变List大小时,内部会新建一个数组,在将添加元素前将所有数据拷贝到新数组中
..........●..随机访问很快,删除非头尾元素慢,新增元素慢而且费资源
..........●..较适用于无频繁增删的情况
..........●..比数组效率低,如果不是需要可变数组,可考虑使用数组
..........●..非线程安全
..........●ArrayList(顺序表)底层采用数组实现,当使用不带参数的构造方法生成ArrayList对象时,实际上会在底层生成一个长度为10的Object类型数组。如增加的元素超过10个,那么底层会生成一个新的数组, 长度为原数组的1.5倍+1,然后将原数组的内容复制到新数组当中。
.
..........Vector.
..........●..另一种ArrayList,具备ArrayList的特性
..........●..所有方法都是线程安全的(双刃剑,和ArrayList的主要区别)
..........●..比ArrayList效率低
...............Stack
...............●..LIFO的数据结构
..........LinkedList.
..........●..链接对象数据结构(类似链表)
..........●..随机访问很慢,增删
操作很快,不耗费多余资源..........●..非线程安全
..........●..次类实现Queue接口,提供FIFO队列操作
2......Set.
.....●..不允许重复元素,可以有一个空元素
.....●..不可随机访问包含的元素
.....●..只能用Iterator实现单向遍历
..........HashSet
..........●..用HashMap作为根本数据结构来实现Set
..........●..元素是无序的
..........●..迭代访问元素的顺序和加入的顺序不同
..........●..多次迭代访问,元素的顺序可能不同
..........●..非线程安全
...............LinkedHashSet
...............●..基于HashMap和链表的Set实现
...............●..迭代访问元素的顺序和加入的顺序相同
...............●..多次迭代访问,元素的顺序不便
...............●..因此可说这是一种有序的数据结构
...............●..性能比HashSet差
...............●..非线程安全
..........SortedSet
..........●..加入SortedSet的所有元素必须实现Comparable接口
..........●..元素是有序的
...............TreeSet.
...............●..基于TreeMap实现的SortedSet
...............●..排序后按升序排列元素
...............●..非线程安全
-----------------------------------
Iterator..
●..对Set、List进行单向遍历的迭代器
..........ListIterator.
..........●..对List进行双向遍历的迭代器
-----------------------------------
3.Map
●..键值对,键和值一一对应
●..不允许重复的键.
.....Hashtable.
.....●..用作键的对象必须实现了hashcode()、equals()方法,也就是说只有Object及其子类可用作键
.....●..键、值都不能是空对象
.....●..多次访问,映射元素的顺序相同
.....●..线程安全的
..........Properties
..........●..键和值都是字符串
.....HashMap
.....●..键和值都可以是空对象
.....●..不保证映射的顺序
.....●..多次访问,映射元素的顺序可能不同
.....●..非线程安全
...............LinkedHashMap
...............●..多次访问,映射元素的顺序是相同的
...............●..性能比HashMap差
.....WeakHashMap..
.....●..当某个键不再正常使用时,垃圾收集器会移除它,即便有映射关系存在
.....●..非线程安全
.....SortedMap.
.....●..键按升序排列
.....●..所有键都必须实现.Comparable.接口.
...............TreeMap.
...............●..基于红黑树的SortedMap实现
...............●..非线程安全
-------------------------------------------------------------------------------------
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
这一点要看实际情况的。若只对单条数据插入或删除,ArrayList的速度反而优于LinkedList。但若是批量随机的插入删除数据,LinkedList的速度大大优于ArrayList. 因为ArrayList每插入一条数据,要移动插入点及之后的所有数据。 这一点我做了实验。在分别有200000条“记录”的ArrayList和LinkedList的首位插入20000条数据,LinkedList耗时约是ArrayList的20分之1。
4.查找操作indexOf,lastIndexOf,contains等,两者差不多。
5.随机查找指定节点的操作get,ArrayList速度要快于LinkedList.
这里只是理论上分析,事实上也不一定,ArrayList在末尾插入和删除数据的话,速度反而比LinkedList要快。
分享到:
相关推荐
Java是世界上最流行的编程语言...通过阅读和实践提供的"java数据结构基础算法"文件,你可以深入学习并掌握这些概念。在Java开发中,熟练掌握数据结构和算法能帮助你编写出高效、优雅的代码,从而在职业道路上更进一步。
《Java数据结构和算法中文第二版》是一本深入探讨Java编程中数据结构和算法的书籍。数据结构是计算机科学的基础,它涉及到如何有效地组织和存储数据,以便在各种操作下高效地访问和修改。算法则是解决问题的具体步骤...
这份"Java数据结构基础PPT"是为初学者准备的自学资料,旨在帮助初学者系统地理解和掌握各种基本的数据结构。 1. **数组**:数组是最基础的数据结构,它是一组相同类型元素的有序集合。在Java中,数组是对象,可以...
Java作为广泛应用的编程语言,其在实现数据结构和算法时有着丰富的库支持和优秀的可读性。下面将对标题和描述中提到的一些关键知识点进行详细解释。 1. **数据结构**: - **稀疏数组**:当大量数据中大部分为零或...
Java数据结构和算法.pdf
《Java数据结构与算法...总的来说,《Java数据结构与算法中文版》是Java开发者提升自身技术水平的宝贵资源,通过深入学习和实践书中的内容,可以提高代码质量,解决复杂问题,并为软件工程的优化和扩展打下坚实基础。
Java数据结构是计算机科学中的重要课程,主要探讨如何有效地存储和组织数据,以便进行高效的操作。这门课程通常包括数组、链表、栈、队列、树、图、哈希表等多种数据结构,并深入讲解它们的特性、操作方法以及在实际...
总的来说,这个《Java数据结构全套》压缩包为Java开发者提供了一个系统性的学习路径,从理论到实践,从基础知识到高级技巧,全面覆盖了数据结构的核心内容。通过深入学习和实践,不仅可以提高编程技能,还能为解决...
总之,学习和实践"Java数据结构实例"能帮助你深入理解数据结构的内部机制,提升编程思维,为解决实际问题打下坚实的基础。对于每一个数据结构,理解其特性,熟悉其操作,并通过编程实践加以巩固,是成为一名优秀Java...
Java数据结构与面向对象...总之,Java数据结构与面向对象编程是编程学习的核心,它们是构建复杂系统的基础。通过深入理解并熟练应用这些概念,开发者可以编写出高效、可维护的代码,为自己的职业生涯打下坚实的基础。
通过阅读“Java数据结构和算法中文第二版”,学习者能够系统地了解这些基础知识,并通过实践加深理解。同时,加入特定的编程群组,如文中提到的“524621833”,也有助于获取最新的资源、交流经验和解决实际问题。
《邓俊辉版Java数据结构源码》是学习数据结构与算法的重要参考资料,它与邓俊辉教授编写的《Java数据结构》教材相配套,旨在帮助读者深入理解数据结构的概念和实现方法。邓俊辉教授的讲解风格清晰易懂,他的源码同样...
Java数据结构和算法第七讲.avi Java数据结构和算法第三十一讲.avi Java数据结构和算法第三十七讲.avi Java数据结构和算法第三十三讲.avi Java数据结构和算法第三十九讲.avi Java数据结构和算法第三十二讲.avi Java...
总的来说,《数据结构(Java版本)》是一本适合程序员入门的教材,通过学习,你可以系统地掌握数据结构和算法,并用Java语言进行实现,为今后的软件开发打下坚实的基础。无论你是准备面试,还是想要提升编程技能,这...
在IT领域,数据结构是计算机科学的基础,它研究如何组织和存储数据,以便高效地进行各种操作。在Java编程中,实现数据结构是一项关键技能,因为它直接影响到程序的性能和可维护性。在这个名为“数据结构JAVA实现”的...
综合以上,这个Java数据结构课程设计项目不仅锻炼了对基础数据结构的理解和应用,还提升了文件操作和GUI编程的能力。通过这样的实践,学习者可以更好地理解和掌握数据结构在实际问题中的应用,为后续的软件开发工作...
本资源"java数据结构源码"提供了一套完整的Java实现,涵盖了基础到高级的数据结构,包括数组、链表、二叉树、图以及各种排序算法。让我们逐一深入探讨这些知识点。 1. **数组**:数组是最基础的数据结构,它是一...
《清华邓俊辉Java数据结构》是一门深入探讨数据结构及其在Java编程语言中实现的课程。这门课程由清华大学的邓俊辉教授主讲,旨在帮助学生掌握数据结构的基本概念,理解它们的工作原理,并能用Java语言进行实际操作。...
Java数据结构是编程领域中的重要基础,它涉及如何在计算机中高效地组织和管理数据,以便进行快速查找、插入和删除等操作。本主题主要关注Java语言实现的数据结构及其相关算法,这对于提升程序性能和解决复杂问题至关...