ArrayList的存储方式:是通过数组扩容的方式进行存值的,首先实例化一个一定空间的数组进行存值,当超出数组个数,则实例化一个更大的数组,然后将旧的数组与新增加的元素一起拷贝过来。
LinkedList的存储方式是通过双向链表的方式进行存储,当存储第一个值时,该对象划分成3段,第一个代表指向上一个,第二个则进行存值,第三个表示下一个指向;当存储第二个对象时,能找到它的上一个指向,第一个对象也能够找到它的下一个指向
HashSet存储原理,首先传入的数据会根据系统的hash算法的得到一个hash值,然后根据hash值,得到在hash表中的位置,第三步判断该位置上是否有值,没有则插入,如果有值则再次判断传入的值与原值中的地址和内容是否相等,如果相同则不存,否则通过链表方式存储到该位置
TreeSet特点:唯一、可排序
存储原理:是通过二叉树的方式进行存值
当存储第一个元素时,将该值定义为二叉树的根,再次存储数据时跟上一个值比较,如果比根小则放入左边,放入前先判断左子树是否有值,没有则放入,有则与该数判断,如果比根大则判断右子树是否有值,没有则放右边,有则继续判断
总结
List与set区别
list:存储有放入顺序可重复的数据
set:存储无放入顺序不可重复的数据
List接口有三个实现类:LinkedList,ArrayList,Vector ,
Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet
网友评论