黑马程序员--------集合

来源:互联网 发布:嘉兴市行知小学蔡老师 编辑:程序博客网 时间:2024/05/28 20:18

黑马程序员——集合

1集合概述

       集合其实就是一个可以存放任意对象的一个容器,相比较数组来说,数组存放的数据类型是固定的,长度是固定的,而集合可存放任意类型数据,集合存放的都是引用类型的对象,而数组,你可以定义为引用类型数组,存放对象,也可定义基本类型数组。其实集合之所以能存放基本类型数据,主要是因为jdk1.5版本的自动拆箱和装箱的功能,把基本类型数据转成引用类型数据

2单列集合体系结构及特点:

                     Collection
                             |__List::元素是有序的,存取的顺序一致.。因为该集合体系有索引。
                                     |     注意:判断集合是否包含某个元素,以及删除某个元素,依靠的都是元素的equals()方法。
                             |        |__ArrayList:底层使用的数据结构是数组结构。线程不同步
                             |        |___LinkList:底层使用的数据结构是链表结构
                             |        |__Vector:底层使用的数据结构是数组结构。线程同步
                             |
                             |—Set:元素是无须的(存入和取出的顺序不一致),元素不可重复。
                                   |            并且Set集合的功能和Collection接口的功能是一致的
                                    |__Hashset:底层的数据结构是哈希表。
                                    |            HashSet保证数据唯一性的原理:判断元素的hashCode值是否相同,,如果相同还会继续比较对象的
                                    |                             equals()方法,是否为True
                                    |__TreeSet::底层使用的数据结构是二叉树。可以对Set集合中的元素进行排序。
                                    |                      TreeSet保证数据唯一性的原理是:根据元素的CompareTo方法,是否返回0;

 TreeSet的两种排序方式:

          (1)让元素自身具备比较性,元素需要实现Comparab 接口 ,覆盖   CompareTo方法,这种方式也 称元素的自然顺序。

            (2) 当元素不具备比较性时,或具备的比较性不是我们所 需要时需要让集合具备 较性,在集合初始化时,就有了比较方式,即在构造函数 中定义一个比较器,将比较器对象作为参数传递给TreeSet集合中的构造函数 中。当两种排序都存在时,以比较器为主。

注意:

              ArrayList判断元素是否存在,还有删除元素依赖的是元素的equals()方法,HashSet判断集合中是否包含某个元素,及删除         某个元素依赖的是hashCode()和equals()方法, TreeSet判断元素是否存在,还有删除元素依赖的是元素的compare()方法

3双列集合体系及特点:

                Map
                  |_HashTable:底层是哈希表数据结构,不可以存入null键和null值,线程同步的。
                  |
                  |_HashMap:底层用的也是哈希表数据结构,允许使用null键和null值,线程不同步的,效率高,替代了 HashTable
                  |
                  |_TreeMap:底层是二叉树数据结构,线程不同步。可用于给Map集合中的键进行排序。
  
     Map接口是所有双列集合的一个父类,他是以键值对的形式存储的,他们的键都是唯一的,比较常用的子类有HashMap和TreeMap,

    HashMap底层用的是hash表,所以他保证键唯一性的原理,主要依靠的就是hashcod()和equels()方法,跟HashSet有点类似;TreeMap采用的树状结构,所以他保证键唯一性的原理是依靠对象的比较性,如果对象没有比较性,就会报错,如果你添加的这个数据的键跟集合中的键有重复的,那么后面的会覆盖前面的,特别注意他的返回值是被覆盖的键的值。

0 0
原创粉丝点击