集合小结1

132 阅读2分钟

  ArrayList 和Vector 区别 ArrayList 首先和Vector都是数组结构,长度可变,但是因为Vector实现了线程同步,

就效率而言低于ArrayLit

那么hasMap和hasTable也一样。 hasMap没有线程安全,所以效率上高于table,

而且hasMAp取代了hasTable 中的contains方法,改为了

containsKey和Value。

ArrayList集合采用数组结构,他所谓可变的的实现方式是 当数组长度不够时候,再重新创建一个新的数组,

所以,在ArrayList集合中进行添加之类操作

会很耗时,会涉及到内存的移位操作,所以比较慢。那么说到这,LinkedList就脱颖而出了,

他是采用链表结构的,存的是值和指向下一位值的地址,所以在做

添加删除会很简单,只需要修改地址值,也就是说涉及到指针的向前向后遍历,

但是查询就不行了,在内存空间不是连续的,ArrayList存储空间是连续的,所以ArrayList

查找快,LinkedList增删快。

List和Set是 collection接口下的,Maps是一个单独的集合。

List容许有重复值,可以有null,是有序的

Set与List相反,不容许有重复,只能有一个null,且是无序的

hashSet和treeSet hashSet存储数据采用hash表结构,treeSet是二叉树数据结构 下面细说下这俩个集合

hashSet:向它添加元素时,会先判断其hashcode值,然后根据其值决定位置,

如果当前位置已经有内容存在,那么会调用equals方法判断,注意hashcode()和equals()方法

均要重写,否则不会得到你想要的结果的形式,向hashSet存元素,会先判断hashCode,一旦hashCode不同,直接返回false

,不会进行equals

一个总结性的规则:hashCode相同(true),但equals可能不会相同,存在false可能,

但是equasl相同(true),那么hashCode一定会相同。

TreeSet是sortedSet接口的唯一实现类。TreeSet可以保证元素处于排序状态。

有两种排序方式:自然排序和定制排序。默认是第一种。自然排序使用的是compareTo(Object obj)

方法来比较大小关系,然后按升序排列。返回0相等,正数(大于)反之小于

 不早了,总结下睡觉-。-\

 TreeSet是二叉树实现的,TreeSet数据是自动排好的,不容许有null值\

HashSet是hash表实现,可以放入null,但只容许放入一个,是无序的集合,

内容是以hashCode为唯一标识符的,所以内容不能重复,但可以放入不同的实例!

\