A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黎阳05 中级黑马   /  2013-5-2 20:39  /  1426 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黎阳05 于 2013-5-2 22:11 编辑

map,vector,set,list这几个类之间有什么区别呢,我还是区分的很模糊。。

3 个回复

正序浏览
哥们,整理的一点资料,希望能帮到你

Collection
        |--List:元素是有序的,有索引,所以可以重复
                |--ArrayList:底层使用的是数组数据结构,线程不同步,查询快,增删慢,默认长度是10,不够时,系统自动以50%比率延长。
                |--LinkedList:底层使用的是链表数据结构,增删快,查询慢
                |--vector:底层是数组结构,1.0版本出现,是同步的,被ArrayList替代。
        |--Set:元素是无序的,不可以重复
                |--HashSet底层是哈希表数据结构,线程是不同步的,添加进的对象按哈希表特有方式排序,保证元素唯一性的原理是判断元素的hashcode值是否相同,如果相同,还会使用元素的equals方法进行判断
                |--TreeSet可以对set集合中的元素进行自然排序,但往里边存的对象必须具备比较性。
Map集合,存储键值对,而且要保证键的唯一
        |--Hashtable底层是哈希表数据结构,不可以存入null作为键和值,线程同步JDK1.0出现,效率低
        |--HashMap底层是哈希表数据结构,允许使用null键null值,线程不同步,JDK1.2出现,效率高
|--TreeMap底层是二叉树结构,线程不同步,可以用于给Map集合中的键进行排序
其实,Set底层就是使用了Map集合
回复 使用道具 举报
老张的面试宝典中原话:
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
LinkedList也是线程不安全的,LinkedList提供了一些方法,使得LinkedList可以被当作堆栈和队列来使用。而MAP则存储的是唯一的key和与key相对应的value映射关系

总之,还需要细心体会
回复 使用道具 举报
老张的面试宝典中原话:
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
LinkedList也是线程不安全的,LinkedList提供了一些方法,使得LinkedList可以被当作堆栈和队列来使用。而MAP则存储的是唯一的key和与key相对应的value映射关系

总之,还需要细心体会
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马