ArrayList_HashSet的比较及Hashcode分析

来源:互联网 发布:阿拉善see基金会 知乎 编辑:程序博客网 时间:2024/05/17 15:37

Collection接口,Collection表示一组对象,这些对象称为Collection 的元素,一些Collection元素允许有重复的元素,而另一些不允许,一些Collection是有序的,而另一些是无序的,ArrayList、Vector和LinkedList是有序的,允许有重复的元素,ArrayList、Vector的底层实现都是数组实现的,增删慢,查找快。Vector的线程安全,而ArrayList的线程不安全,LinkedList底层的实现是链表的结构,查找快,增删慢。HashSet底层采用HashCode算法保证集合里面的元素无序,equals方法保证原始的不重复,因此,如果往HashSet里面村元素就必须实现hashcode方法和equals方法。

 

java中的内存泄露问题:

当java中的对象没有引用指向他的时候,就会变成垃圾,在不确定的时候,在内存不够的时候概率更大,系统自带的垃圾回收器把垃圾回收,也可用System.gc()实现人工回收。在往HashSet里面存元素后就不要再对那些参与计算的对象的字段进行修改了,否则,对象修改后的Hash值和与最初存进HashSet的之就不一样了,即使作为当前引用去检索,也不是以前的那个对像了,也会导致无法从集合中删除。重复这样的操作就会造成内存泄露!