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集合的分享到此结束。希望能给大家带来帮助,如若转载请注明出处,尊重原创,谢谢。