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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张迁 中级黑马   /  2013-5-15 23:39  /  1150 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张迁 于 2013-5-17 20:52 编辑

最近学到集合,学到了好多,如ArrayList.Linkedlist,Vector,HashSet,TreeSet,对这些集合使用的数据结构不是很明白,以及这些集合在什么情况下使用很混乱,求总结!

5 个回复

倒序浏览
本帖最后由 刘学明    于 2013-5-15 23:54 编辑

集合不是很乱哦 如果感觉乱的话多看几遍  都有层次关系的

大致三大集合接口  List  Set Map
List包括 ArrayList   Vector  LinkedList
Set包括 HashSet   TreeSet  
Map包括 HashTable  HashMap TreeMap

他们各自有各自的特点:

List接口及其实现类
List接口继承于Collection接口。 List接口及其实现类是容量可变的列表,可按索引访问集合中的元素。
特点:集合中的元素有序(存入取出的顺序一致)、可重复;
实现类:
ArrayList是以Arayy方式实现的List,允许快速随机存取,相对于LinkedList不适合进行插入和移除元素操作;
LinkedList提供最佳顺序存取,适合插入和移除元素。
Vector和ArrayList功能是相同的 Vector多应用于同步中 ArrayList多应用于非同步中。一般开发用ArrayList。
2)、Set接口及其实现类
Set接口同样继承于Collection接口。
特点:集合中的元素无序(存入取出的顺序不一致),不包含重复的元素。
实现的类:
HashSet 能够快速定位一个元素,要注意的是:存入HashSet中的对象必须实现HashCode()方法;
TreeSet 将放入其中的元素按排序存放。排序有二种方式 一种是自然排序 让对象实现Comprable 一种是创建比较器排序,实现Comparator.
3)Map接口及其实现类
Map是一个单独的接口,不继承于Collection。Map是一种把键对象和值对象进行关联的容器。
特点:键对象不允许重复。
实现类:
HashMap 实现一个键到值映射的哈希表,通过键取得值对象;
Properties 一般是把属性文件读入流中后,以键-值对的形式进行保存,以方便读取其中的数据。
4)、Iterator接口
Iterator接口位于java.util包中,它是一个对集合进行迭代的迭代器。
集合容器(如:List、Set、Map等)本身提供了处理元素置入和取出的方式,但是单一选取元素的方法很受限制。所以我们要用Iterator去选取容器中的元素,它将容器转换成一个序列。

Collection、Set和List的区别如下:
Collection对象之间没有指定的顺序,允许有重复元素和多个null元素对象;它是Set和List接口的父类,是一种最通用型的集合接口;

Set各个元素对象之间没有指定的顺序,不允许有重复元素,最多允许有一个null元素对象;
List各个元素对象之间有指定的顺序,允许重复元素和多个null元素对象;
回复 使用道具 举报
总结的很好啊,赞一个
回复 使用道具 举报
这个么,如果没有学过 数据结构 的话,想很快弄懂,不是那么容易。
记得以前我的老师说过:程序的最终目的就是处理数据,而程序的本质就是让复杂的问题简单化。
建议楼主学习的时候结合一下现实生活中的一些事物,把虚拟的东西与实体互换一下,兴许效率会更高一些。
加油哦。
回复 使用道具 举报

集合分类
        collection:        一次储存一个对象,单列集合

                List        有索引,可重复
                        ArrayList: 数组实现,查找快,增删慢
                        LinkedList:链表实现,增删快,查找慢
                        Vector          数组实现,线程安全       
   
                Set        无索引,去重复
                        HashSet                使用哈希算法去重复,效率高,但无序
                        LinkedHashSet        使用哈希算法去重复, 效率高,并且保留存储顺序    是HashSet的子类。
                        TreeSet                使用二叉树去重复,可以自定义元素存储的顺序
                       

         map:        一次储存两对象,键值对集合

                        HashMap                使用哈希算法去重复,效率高,但无序
                        LinkedHashMap        使用哈希算法去重复, 效率高,并且保留存储顺序
                        TreeMap                使用二叉树去重复,可以自定义元素存储的顺序
                        Hashtable        类似HashMap, 线程安全, 效率略低, 不允许null键和null值
                        Properties        Hashtable的子类, 用来操作配置文件
回复 使用道具 举报
一般的,使用集合,看具体的要求,有特殊要求的根据要求选择,没有要求的话,首选就是ArrayList  .上面已经帮你总结了,自己多练练代码.  加深下.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马