Java 集合类的学习

集合类的跟是接口Collection,然后集合分为三种:Set,List,Map

下面对这三种集合的特性以及常用的类进行说明:

 

1、首先介绍Set,作为Set首先最主要的区别与List的特性是它只允许每个值的一个实例,如果Set中存在一个值的实例时,再次添加的时候必然失败。也正是由于Set的这个特性Set集合中的元素的类必须定义equals方法。(有的同学可能会人为equals方法在Object中有定义,所以不用再定义,可是要注意的是Object中equals比较的只是地址。)

   Set主要用到的一般有HashSet,ArraySet,TreeSet

    HashSet中的元素的类必须定义HashCode方法,因为它是利用HashCode进行存储顺序的维持。

    ArraySet中的元素是按顺序存储的,是针对比较小的集合使用的,随着集合的增大,性能会显著降低。(对于小型集合速度优于HashSet)

    TreeSet中的元素也是有序的,非线程安全,若要使用线程安全一般使用Collections.synchronizedSortedSet,进行包装。特性就是根据CompareTo进行的排序。

 

2、下面介绍Map,Map的key和Set一样必须定义equals方法,至于原因,我想只要是脑袋正常的人应该都可以想到。

       HashMap是最常用的Map因为它是继承自Map,是一种轻量级的实现,所以在速度上是比较快的。

      HashTable实现的是dictionary是一种重量级的实现,所以在速度上明显会比较慢。

      ArrayMap跟ArraySet的特性很相似,这里就不再赘述。

      TreeMap其实跟TreeSet的特性也很相似,但是要赘述一点是,这里有一个比较特殊的方法,只在这里存在,subMap,可以按照key的开始和终了值截取一部分视图。

       LinkedHashMap 也是一种有序的HashMap和HashMap的最大区别就是HahMap中加入的元素是无序的。

 

3,下面介绍List,是一种最常用的顺序结构。

       ArrayList:可以快速访问,如果不常改变,速度是最快的。

       LinkedList:和上面那个的区别,只要学过数据结构的人应该都很容易能理解,不再赘述。

       Vector:是一种大小可变化的数组而已。

 

下面介绍一下这些集合的访问:

     无疑使用下标访问是最快的,其实在一般程序中,最常用的是iterator进行访问。在List中存在一种listIterator,可以向前也可以向后遍历。

 

总结:

其实在这些集合中因为进行了这样或者那样的封装,所以相比较数组来说,就比较慢了,可是数组比较固定,因为数组一旦申请下来空间之后就是不可变的。所以一般除非对性能有特殊的要求所以很少使用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值