Java专题之集合

        Java专题之集合

        笔者是从事Android开发的,所以对java也是略有见解的,Android开发过程中经常会使用到一些集合如:ArrayList,HashSet,HashMap;这里我们来探讨一下android常常借助于java而经常使用的那些常见又经典的集合。

        以android开发的角度看java中最常使用的三个集合是ArrayList,HashSet,HashMap,所以此篇的讲述也是以此四个集合为中心进行技术分享和展开,若有不足,还望在下方评论区为笔者指出,以相互学习共同进步。

        要谈及这三个集合,那么先要谈一谈它们的先辈,即为它们缘何而来,往哪里去。关于Collection,Map集合大家都见过,它俩共同承担了所有集合的祖辈。此一对集合有何区别,java为何要撇开“一山偏要容二虎”的态势呢?此处可要说道说道了。Collection中存储了一组对象,而Map则用来存储键值对,一起构成了java的两种存储机制。Collection作为接口,包含着List和Set子接口。此外有些基本数据结构类的知识,大家了解些的好,比如Array字眼基本都是和“数组”有关;Hash呢则是和“散列”相关;Link为“链式”相关,方便插入操作;Tree为“树型排序”,方便查询时返回最接近匹配项的导航式方法。

        现在我们则让三个集合类闪亮登场,顺便认个亲。ArrayList实现的为List接口,HashSet实现的是Set接口,而HashMap呢?则最终实现的为Map接口。那好,追根溯源之后,我们就可以很简单的理清楚这三个集合的区别。

        1,ArrayList------首先是ArrayList,ArrayList底层采用数组实现,具有较高的查询速度。这要源于List接口具有维护元素的顺序,且元素可以重复的特性。该特性也使得ArrayList是最简单最常用的集合。

       2, HashSet------其次是HashSet,HashSet是为快速查找而设计的Set,因为Set接口不保证维护元素的顺序,且元素不能重复。所以嘞,存入HashSet的对象必须实现hashCode()和equals()。 

       3, HashMap-----之后是HashMap,通过看HashSet和HashMap的字母排序就可以得知,我们大抵可以得出其相同点和不同点。相同点都是不保证维护元素的顺序,且元素不能重复。而不同点呢,则是一个存储的是对象,另一个存储的则是键值对。毕竟以Hash开头可不是闹着玩的。


        好了,现在我们理清楚了,三者的区别。那么剩余的和它们以兄弟接壤的其他集合的功能也就呼之欲出了。仍然按照ArrayList,HashSet,HashMap的顺序对余下的集合进行比较是分析。

        1,ArrayList和LinkedList同实现于List接口。

                   刚才已经说过ArrayList底层采用数组实现,为顺序存储结构;LinkedList底层采用双向循环列表实现,为链式存储结构,因此进行插入和删除操作时具有较高的速度,我们还可以使用LinkedList来实现队列和栈。

        2,HashSet和LinkedHashSet,TreeSet二者的比较,同实现于Set。

                   LinkedHashSet,具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序),于是在使用迭代器遍历Set时,结果会按元素插入的次序显示,说通俗点儿就是给HashSet排个链式的序,方便了插入操作;TreeSet: 提供排序功能的Set,底层为树结构,这就说明它具备了针对给定查询目标返回最接近匹配项的导航方法。

        3,HashMap和TreeMap的比较。

                   关于此二者的比较,我们简单粗暴一点:HashMap无序,TreeMap有序,且是以数的结点层次结构进行排序的,这种二叉树式的排序的一大特点就是做查询时能针对给定的查询目标返回最接近匹配项的导航方法。

       

        关于Java集合的分享到此结束。希望能给大家带来帮助,如若转载请注明出处,尊重原创,谢谢。



基础知识模块提供有关Java工具软件及Java基础语法知识的教学资源。这部分系统归纳总结了本课程基本理论知识及Eclipse软件操作的基本方法、技巧,可供学生自学,可作为学生入门学习教程或基础知识资料库。基础知识模块的每一个知识点只包含一个教学资源文档。教学资源文档由文本、图片和附件组成。 进阶知识模块提供Java高级编程知识的教学资源。此模块中的每一个进阶知识都是一个专题,包含多个教学资源文档。 实例教程模块提供了从简单到复杂的Java实例讲解文档和代码,以知识点为线,采取循序渐进的方式,引导学生对相关知识的掌握。每一个实例教程包含实例题目、实例内容、实例讲解、运行结果和代码附件。 拓展知识模块精选了网络上的相关知识,作为学生额外学习的内容。既可拓宽学生知识面,又可以加速加深学生对本课程的理解,提高他们对专业知识的实际应用能力。 学生作品展示模块,包括学生课程设计、项目实训的优秀作品及大赛作品等。作品展示要求有标题、作者名、内容介绍、效果展示、附件(相关文档、源代码或发布文件)等内容。 相关资源包括相关软件资源、优秀网站和电予书下载等。 在线测试模块,可以有效地检验学生对Java知识的掌握程度。此模块不做强制要求,可每组自己决定怎么做。 系统包含三类用户角色:系统管理员、教师和学生。学生角色拥有阅读、下载所有的资源的权限;教师角色拥有上传资源,管理自己上传资源的权限;系统管理员角色拥有创建教师用户,管理所有资源等权限,系统只有一个系统管理员。学生通过网站注册拥有学生角色权限
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值