您的位置:首页 > 职场人生

黑马程序员之java--集合框架总结

2014-03-15 21:48 543 查看
------- android培训java培训、期待与您交流! ----------
|--collection: 集合框架

    |--List :有序的列表集合,允许重复元素,提供集合的基本操作,增删查改

       |--Vector:     可变的数组结构,同步,执行效率低,一般有ArrayList替代

    |--ArrayList:  可变的数组结构,不同步,增删较慢,但查询很快

    |--LinkedList: 链表结构,不同步,增删很快,但查询很慢,可用于堆栈、队列中

   

 |--Set : 不可重复元素,不保证顺序,最多一个null,取出方式只有一种:迭代器

    |--HashSet:哈希结构,不同步,保证元素唯一性依赖于:hashcode和equals方法,但查询速度比数组快

                在存储元素时,先计算元素的哈希值(hashCode()),由哈希值确定元素的位置。

       如果存储的元素哈希值相同,也就是哈希冲突,解决方法是会执行equals方法判断元素的内容是否相同,是则不存,否则就链接存储

       由此可见,在存储对象的时候,确定对象是否相同,则要重写该对象的hashcode方法和equals方法

       在查找该元素,直接找该元素的哈希值就可以确定。

        |--linkedHashSet : 保证元素的唯一性又保持有序

    |--TreeSet:二叉树结构,对set集合的元素自动排序。但如何保证唯一性呢?

                使用对象的比较方法,返回0表示相同就不存元素

       元素的排序比较有两种方式:

       1、元素本身的自然排序,也就是实现了comparable接口的compareTo方法

       如果元素本身不具备自然排序或是具备的自然排序不是需求的,那就使用第二种比较方式

       2、比较器排序:也就是在新建TreeSet集合时,在构造方法中传入比较器对象。

       需要定义一个类实现comparator接口中的compare方法

    

   到此为止,需要集合存储对象,需要该对象重写hashcode()、equals()和实现comparable接口,实现自然排序,

   通常也会重写toString()

|--Map:双列集合框架

    |--HashTable: 哈希表结构,是同步的,但不能使用Null作为键和值,但被HashMap替代

        |--Properties:属性集,键和值都是字符串,可以使用流操作

    |--HashMap:    哈希表结构,非同步的,可以使用Null作为键和值

        |--LinkedHashMap:基于链表+哈希表,保证map集合有序(存入和取出一致)

    |--TreeMap:   二叉树结构,非同步的,保证集合中的键进行排序

 

注意:1、列表集合使用collentions的迭代器,在迭代时,操作集合中的元素,会引起异常发生

                   解决办法:列表集合也提供了列表的迭代器,该迭代器可以解决上述问题listIterator

------- android培训java培训、期待与您交流! ----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: