您的位置:首页 > 其它

集合框架

2016-01-04 17:51 309 查看
集合框架分为两大派系:

|--单列集合 Coloection

        |-- List 有序,可重复,元素都有索引值

                |-- ArrayList         底层是数组数据结构,查询速度快,增删稍慢,线程不安全的

                |-- LinkedList        底层是链表数据结构,增删速度快,查询稍慢,线程不安全的

                |-- Vector            底层是数组数据结构,查询相对于ArrayList慢,增删相对于LinkedList慢,线程安全的,jdk1。0时出现,后来被ArrayList替代

        |-- Set  无序,不可重复,因为底层是封装的一个Map集合,它使用了Map的key,丢弃了Map的vlaue,所以必须保证元素的唯一性。

                |-- HashSet   底层是哈希表数据结构,线程不安全的,无序高效,必须保证元素的唯一性,依赖于hashCode()和equals()方法

         |-- LinkedHashSet 是存取有序的,底层是链表数据结构,元素唯一的原理和HashSet一样

                |-- TreeSet   底层是二叉树数据结构,线程不安全的,可以对存入的数据进行排序,但是必须保证元素的唯一性,否则会导致元素覆盖

                     要使用TreeSet集合对元素进行排序,前提是必须让元素具备可比性,有两种方式:

                                (1) 让元素自身具备比较性,也就是让元素实现Comparable接口并覆盖compareTo()方法来指定比较规则

                                (2) 如果元素自身不具备比较性或者具备的比较性不是所需要的,我们可以定义一个比较器,也就是实现Comparator接口并覆盖compare()                                                                方法来指定比较规则,通过TreeSet的构造方法传递给集合即可。

|--双列集合 Map

        |-- HashMap   底层是哈希表数据结构,线程不安全的,可以存储null键null值,数据是以键值对的形式存储的,键和值之间存在着映射关系。

        |-- Hashtable 底层是哈希表数据结构,线程安全的,不可以存储null键null值,jdk1。0时出现,后来被HashMap替代

        |-- TreeMap   底层是是二叉树数据结构,线程不安全的,可以对集合中的key进行排序,排序方式和TreeSet相同

|-- Iterator迭代器:要遍历集合,则需要使用到Iterator接口,也就是迭代器,调用集合的一个iterator方法返回的就是一个Iterator迭代器,通过该迭代器的hasNext()和next()方法        就可以循环得到集合中的每一个元素。foreach循环底层也是使用迭代器实现的。

        |-- List集合特有的遍历方式:普通for循环集合get(index)和size()方法实现遍历。另外List集合还有ListIterator可以实现向前遍历,前提是先向后遍历过。

        |-- Map集合本身是没有迭代器的,要想迭代该集合中的元素有两种方式:

        (1)调用该集合的keySet方法返回的是集合中所有的key的Set集合,再使用Set集合的迭代器对返回的Set集合进行迭代,再通过Map集合的get(key)方法获取key对应        的value值

        (2)调用该集合的entrySet方法返回的是Map集合中键和值的眏射关系,数据类型为Map。Entry,在迭代返回的Set集合获取每一个键和值的眏射关系,在调用Map。Entry        的getKey()和getValue()方法回去对应的键和值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: