java学习总结——集合框架
?单纯的通过代码来观察,可能会觉得这三个东西好像没有什么区别。因为他们都是创建一个对象,然后在向里面add内容,然后在遍历输出。可是他们的本质是不同的。ArrayList显而易见是通过数组来实现的。数组这个可能就更了解了。与之相比LinkedList则是通过链表来实现的。数组与链表不同主要是数组他的物理地址是连续的。而链表则不是,链表则是有一块儿负责存放下一个单位的地址的区域。所以在执行一些操作上,例如向队列中添加元素的时候,数组则是要找到所添加的位置,再把从这个位置到末尾的数据都给复制一遍。而链表实现这些就不需要,他只需把前一位置所指向的地址改一下就行了,就像把链条卸开,在中间填一个铁环一样。
至于Vector向量这个呢。他也是通过数组来实现的。与ArrayList的不同就在Vector是线程安全的~~
他们之间也有相似的地方,例如你遍历他们输出的顺序,都是与他们的添加顺序是一样的。他们也都是有序可以重复的。
?
接下来总结一下HashSet和TreeSet。
?
这个HashSet和TreeSet都是无序不可重复的。这里所说的无序指的是无论你的添加顺序如何,他最后通过迭代器输出的结果的顺序都是一样的。?如果添加进去同样的数据,则只会保留一个。
Set遍历输出的方法也不只限于使用迭代器。也可以直接通过System.out.println(set);来输出。
?
关于这几个集合框架,我平时使用的较多的就是ArrayList,可能也是水平有限所做的应用有限所以用不到那些比较高端的。可能对它们的理解也不是很透彻,有不足的地方还多望大神们指出!~谢谢~