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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© IT_JM 中级黑马   /  2013-10-14 17:06  /  1275 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Collection和collections的不区别:

        Collection: 是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。它有两个常用子接口List、Set。

        Collections: 是集合框架中的一个工具类。该类中的方法都是静态的。它提供的方法中有可以对List集合进行排序、二分查找等方法。
   通常集合都是线程不安全的,因为要提高效率。如果要多线程使用这些集合,可以通过工具类中的同步方法,将这些线程不安
   全的集合转换成安全的。

Collection集合包括List和Set集合  
        Collection  
         |---List :集合中元素是有序的,元素可以重复,该集合体系按索引进行操作。  
            |---ArrayList  :底层是数组结构。查询速度快,但增删稍慢。线程不同步。-->可变长度数组,自动50%延长  
            |---LinkedList :底层是链表结构。查询稍慢,  但增删快。  线程不同步。-->可变长度数组,自动100%延长  
            |---Vector     :底层是数组结构。线程同步,被ArrayList替代了,因为效率低。  
         |---Set  :集合中元素是无序的(存入和取出的顺序不一定一致),元素不可重复,  
            |--HashSet  :底层数据结构是哈希表,是线程不安全的,不同步。  
                        (哈希表按哈希值进行存储,如果哈希值相等则判断元素是否相等,如果元素相等则哈希值进行顺延)  
                 HashSet是如何保证元素唯一性的呢?
   |--LinkedHashset
                        是通过元素的两个方法,hashCode和equals来完成。  
                        如果元素的HashCode值相同,才会判断equals是否为true。  
                        如果元素的hashCode值不同,不会调用equals。  
               注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法。  
                  Object的toString()方法其实调用的是:getClass().getName()+'@'+Integer.toHexString(hashCode());  
      
            |--TreeSet  :可以对Set集合中的元素进行排序,  
                        底层数据结构的二叉树。 保证元素唯一性的依据:compareTo方法return 0.  
                TreeSet排序的第一种方式:  
                        让元素自身具备比较性。元素需要实现comparable接口,覆盖compareTo方法。  
                        这种方式也成为元素的自然顺序,或者叫做默认顺序。  
                TreeSet的第二种排序方式:  
                        当元素自身不具备比较性时,或者具备的比较性不是所需要的。  
                        这时就需要让集合自身具备比较性。在集合初始化时,就有了比较方式。
                        实现comparator接口,compare()方法。  
                怎样取出set集合中的元素?   当然是通过调用iterator()使用迭代器(Iterator)  
                怎样取出List集合中的元素?  List集合特有的迭代器。ListIterator是Iterator的子接口。  
        Map  
            Map集合的特点:该集合存储键值对,一对一对往里存,而且要保证键的唯一性。  
            Map  
             |--Hashtable:底层是哈希表数据结构,不可以存入null键,null值.该集合是同步的,JDK1.0出现的,效率低  
             |--HashMap:底层是哈希表数据结构。并允许使用null键和null值,该集合是不同步的,JDK1.2出现的,效率高  
             |--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给Map集合中的键进行排序

            1.HashMap: 底层是双列的哈希表,不存储重复元素,存储自定义对象时,必须覆盖HashCode和equals方法.此集合可以运行null键和null值.  
            2.TreeMap: 内部使用二叉树算法,可以对存入的元素进行自然顺序的排序  
        Map遍历集合: 1.Set<k>  keySet:将map中所有的键存入到Set集合。因为set具备迭代器.  
                                      所有可以迭代方式取出所有的键。再根据get方法获取每一个键对应的值.  
                        Map集合的取出原理:将map集合转换成set集合,通过迭代器取出.  
                     2.Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中, 而这个关系的数据类型就是Map.Entry  
                                                    map→(entrySet,将map集合中的映射关系取出,这个关系就是Map.Entry类型)→Set  
                                                    那么关系对象Map.Entry获取到后,就可以通过Map.Entry中的getKey和getValue方法获取关系中的键和值.  

评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1 25分咯!撒花撒花!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马