对于Android开发者来说深入了解Java的集合类很有必要主要是从Collection和Map接口衍生出来的,目前主要提供了List、Set和Map这三大类的集合,今天Android123就他们的子类在标准情况和多线程下的性能做简单的分析。
Collection接口主要有两种子类分别为List和Set,区别主要是List保存的对象可以重复,而Set不可以重复,而Map一般为key-value这样的对应关系,比如我们常用的HashMap。
一、List 主要有ArrayList、LinkedList、Vector和Stack
有关这些子类的性能,Android开发网从插入、删除、移动等方面按照元素的执行效率做一一分析,通过分析Sun 的Java源码和实际元素操作得出下面结论:
ArrayList - 他的构造主要从AbstractList实现,主要是判断下初始元素的容量,ArrayList最大的特点就是提供了Add、Get操作,当然可以通过迭代器来遍历,对于元素的存在可以通过contains方法判断。
LinkedList - 作为一种双向链表结构,对于元素的插入、删除效率比较高,只需要调整节点指向即可,但是对于随机查找而言性能主要看这个链表长度和运气了。LinkedList也提供了ArrayList的get方法,但是要复杂的多,主要通过next或previous方法遍历得到。
Vector - 比较简单和ArrayList差不多,主要是内部实现了synchronized关键字,实现了线程安全访问但性能有些降低,同时对于元素的扩充在算法上和ArrayList稍有不同,通过构造的容量增量系数来决定。
Stack - 作为栈的操作,本次继承于Vector,提供了push,pop和peek方法,peek是不弹出根据数据大小获取最后一个元素对象。
二、Set 主要有HashSet 和 TreeSet
HashSet - 该类是从Set接口继承而来,相对于List而言就是说内部添加的元素不能重复,当然从名字的Hash来看就是通过哈希算法来实现防止冲突来获得防止重复的,整体上从HashMap实现,存放元素方法的也是类似key- value的对应的,通过迭代器遍历,不过HashSet不是线程安全的。
TreeSet - 这个相对于HashSet而言主要是提供了排序支持,TreeSet是从TreeMap类实现,也是非线程安全的。
可以看到Set的两个类都和Map有关,下面就一起看下有关映射(Map)相关的使用。
三、Map 主要有 HashMap 和 TreeMap
HashMap - 提供了比较强大的功能实现,比如说loadFactor可以控制元素增长时内存分配,HashMap也是非线程安全的。
TreeMap - 相对于HashMap它的排序可以通过传入包含comparator的属性来控制。
四、单线程模式下性能测试 ,测试元素100~1000中平均成绩 :
添加 HashMap效率最高,ArrayList最低,其他的效高的还有Stack、HashSet和Vector,较低的有LinkedList和TreeSet和TreeMap
删除 HashMap效率最高,LinkedList最低,其他的HashSet、TreeMap和TreeSet效率较高,较低的有Vector、ArrayList和Stack
查找 HashMap效率最高,LinkedList最低,HashXXX和Tree效率都比较高,而基于List类效率耗时是Map或Set的十倍左右。
五、多线程模式下性能测试 ,测试元素100~1000,线程数10个中平均成绩 :
分享到:
相关推荐
内容概要:本文详细介绍了Java集合框架的重要性和在Android开发中的应用。首先,阐述了集合框架的基本概念,包括接口(Collection、Set、List、Map)和其实现类(ArrayList、LinkedList、HashSet、TreeSet、HashMap...
在Android开发环境中,你需要熟悉Android Studio,这是一个集成开发环境(IDE),提供了代码编辑、调试、性能分析等功能。安装并设置Android Studio后,你需要配置Android SDK,它包含了开发Android应用所需的各种...
1. **注解处理**:XUtils大量使用了Java的注解(Annotation)技术,通过APT( Annotation Processing Tool)在编译时生成相应的辅助类,降低了运行时的性能开销。 2. **线程管理**:XUtils内部对网络请求、图片加载...
在Android Java开发中,工具类(Utils类)是开发者经常使用的辅助代码集合,它们封装了各种通用功能,以便在项目中快速调用。...同时,理解这些工具类的内部实现也有助于提升对Java和Android开发的理解。
1. **Android开发**: - **组件化**:Android应用开发中的组件化思想是将应用程序拆分成可复用的模块,如Activity、Service、BroadcastReceiver等,便于维护和扩展。 - ** MVP / MVVM 模式**:Model-View-...
15. **Android Studio IDE**:作为Android开发的官方集成开发环境,Android Studio提供了丰富的工具和功能,如代码自动完成、调试器、性能分析器等,能极大地提高开发效率。 通过深入学习上述知识点,并结合"针对...
1. **面向对象** (Object-Oriented Analysis and Design Principle, OOADP): 面向对象编程是Java和Android开发的基础,它涉及类、对象、继承、封装、多态等概念。OOADP强调在设计阶段就考虑系统的可维护性和扩展性。...
"Android开发java小功能集"这个资源集合了一系列实用的Android小功能,包括源码和可安装的APK,便于开发者进行测试和学习。 1. **upload**:这部分可能涉及到文件上传功能的实现。在Android中,通常会用到...
这些工具在"Android开发常用工具类"压缩包中可能包含对应的库源码、示例项目或教程文档,供开发者学习和应用。理解并熟练运用这些工具,将使你的Android开发工作事半功倍。通过持续学习和实践,你可以构建出更加高效...
3. Java集合框架:如ArrayList、LinkedList、HashMap、HashSet等的使用。 4. Android SDK和Android Studio入门:介绍开发环境的安装与配置。 5. Android UI设计:讲解XML布局、自定义View等。 6. Android四大组件的...
学习Java的基础语法,包括变量、数据类型、运算符、流程控制(如if语句、switch case、for循环、while循环)以及类和对象的概念,是Android开发的基石。 2. **面向对象编程**:理解类和对象的概念,熟悉继承、封装...
Java集合框架提供了一套性能优化的接口和类,用于存储和操作对象集合。 2. Java泛型:泛型是JDK 5.0引入的特性,它允许在编译时提供类型安全检查,并减少运行时的类型转换。 3. Java反射:包括反射的原理、使用...
总的来说,这个"Android常用工具类集合"是一个实用的开发资源,它整合了Android开发中的常见操作,通过统一的接口和标准,提高了代码的可读性和可维护性。对于开发者来说,能够快速集成和使用这些工具类,无疑会提高...
在Android开发领域,Android Studio作为官方推荐的集成开发环境(IDE),其强大的功能和灵活性深受开发者喜爱。为了提升开发效率,许多开发者会利用各种插件来扩展Android Studio的功能。本资源是一个“Android ...
4. **集合框架**:ArrayList、LinkedList、HashMap等集合类在处理数据时非常有用。在Android中,它们常用于存储和管理用户数据或应用程序状态。 5. **IO流**:Java的输入输出流系统用于读写文件和网络通信。在...
下面我们将深入探讨这个项目涉及到的Android开发和Java编程的关键知识点。 1. **Android环境搭建**:首先,开发者需要安装Android Studio,这是Google提供的官方集成开发环境(IDE),用于编写、调试和构建Android...
在学习Android开发的过程中,Java作为基础编程语言,其扎实的理解和掌握是至关重要的。下面将详细阐述学习Android所需的关键Java知识点,以便为Android开发打下坚实的基础。 1. **Java基础知识**:首先,你需要了解...
在开发跨平台应用程序时,Qt框架提供了一个强大的工具集,允许开发者使用C++编写代码,同时也能在Android这样的移动平台上运行。"Qt for Android 用JNI来使C++和Java互调"的主题揭示了如何利用JNI(Java Native ...
尽管如此,Java仍是Android开发中使用最为广泛的语言之一,本书所提供的知识基础对于理解Android开发和学习Kotlin都是有帮助的。 总结来说,《Learn Java for Android》是一本系统介绍Java编程及其在Android应用...