您的位置:首页 > 其它

集合框架学习总结

2015-05-21 10:46 106 查看
集合实际用来存储对象(Object),但需要注意的是,集合存放的实质上是对象的地址。接下来我们先来看一下集合框架图,如下(同一颜色方框,我将它们视为同一级):

首先由上图确认一下它们的关系:



Collection (接口)

——Set (接口)----------------------存储元素特点:元素无序,元素不可以重复,与List集合体系本质区别就是无索引。

——HashSet

[b] ——TreeSet

[/b]



——List (接口)----------------------存储元素特点:元素有序,元素可以重复,因为该集合体系含有索引。

——ArrayList

——LinkedList

——Vector

Map(接口)
——HashMap
——TreeMap
——HashTable

补充说明: 1) Collection、Set、List、Map都为接口,不能被实例化,需要通过继承它们的子类(ArrayList、HashMap、HashSet...)才能被实例化。

接下来进行具体介绍。

1. Collection 方法摘要:






补充说明:1).凡是继承了Collection接口的子类都有一个Iterator()方法,通过该方法可以取出集合中所有的值,该方法等后面介绍子类时再加以讲解。

2).a1.removeAll(a2) //集合a1会删除集合a2中相同的元素。

3)a1.retainAll(a2) // 该方法相当于取交集,集合a1只会保留集合a2中相同的元素。

4)Collection其他的方法可以自行去学习,因为开发中比较常见,就不做更多讲解了。

—— 1. 1 List 需要注意的方法摘要:






补充说明:1).列表迭代器(listIterator),是List集合体系中特有的迭代器,它是Iterator的子接口,它有自己的特有方法:hasPrevious()——逆向遍历列表,列表中有多少个元素,与迭代器(Iterator)中hasNext()方法恰好反、Previous()——获取列表中前一个元素,与next()方法恰好相反。

2).列表迭代器(listIterator)另一个特点就是持有可以在集合遍历过程中进行增(add(E e))、删(remove())、改(set(E e))、查(previous())的方法。

3)subList(start,end) 方法可以返回指定部分中集合含有的元素。

———— 1. 1.1 Array List集合特点 介绍 :

1)底层是数组结构,所以查询速度快,相反增删速度慢 。

2)因为该集合底层为数组结构,所以当存储的元素个数大于自定义数组的长度时,该集合会自动以原有数组长度50%延长,并将原数组中的元素复制到该数组中。

———— 1. 1.2LinkedList集合特点 介绍 :

1)底层是链表结构,所以查询速度比较慢,相反增删速度慢比较快 。

2)LinkedList集合特有方法,可以将指定元素添加到列表开头和结尾处(addFirst(E e)与addLast(E e)),可以获取列表的第一元素和列表的最后一个元素。getFirst()与getLast(),removeFirst()与removeLast(),二者区别在于后者获取元素的同时删除元素,前者只获取元素不删除。

———— 1. 1.3 Vector集合特点 介绍 :

1)底层是数组结构,jdk1.2版后被ArrayList集合取代。

2)与ArrayList集合不同之处在于,安全性方面线程同步,所以效率低,数组自动扩展以有数组长度100%延长 。

3)Vector具有的特有方法:elements()方法,返回Enumeration(枚举),其是一接口,包含hasMoreElements()——测试该枚举是否包含更多元素,返回为布尔型。 如果有更多元素,继续调用nextElement()方法——取出枚举中的元素。相当于Iterator迭代器的用法。

—— 1. 2 Set 集合:

———— 1. 2.1 HashSet集合特点 介绍 :

1)底层数据结构是哈希表,所以导致该集合存储元素的时候是无序的,如果想按自身排序可以重写父类中hashCode()和equals(Object o)方法 。

2)线程是非同步的,所以效率方便比较高效。

———— 1. 2.1 TreeSet集合特点 介绍 :

1)底层数据结构是二叉树结构,可以对Set中元素进行排序,也可以根据指定比较器进行排序,只要在该集合构造函数中传一个比较器的参数。



所以我们只需要写一个类实现Comparator接口并实现接口中的compare(Object o1 ,Object o2)方法,如下图:



有必要时,需要用到hashCode值进行比较。

2.Map 方法摘要:






补充说明:通过调用entrySet()方法后,返回一个Set<Map.Entry<K,V>>集合,再通过迭代,得到Map.Entry<K,V>类,通过该类中方法可以单独分别获取key值与Value值.如下图:





———— 1. 2.1 Hashtable集合特点 介绍 :

1)底层数据结构为哈希表结构 。

2)不能存入null值和null键,线程同步,jdk1.2版以后被HashMap取代。

———— 1. 2.2 HashMap集合特点 介绍 :

1)底层数据结构为哈希表结构 。

2)可以存入null值和null键,线程不同步。

———— 1. 2.3 TreeMap集合特点 介绍 :

1)底层数据二叉树结构。

2)线程不同步,可以用于Map集合中键值进行排序,当在构造函数中传入比较器参数(可以参考上面TreeSet集合特点介绍)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: