集合框架学习总结
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集合特点介绍)。
首先由上图确认一下它们的关系:
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集合特点介绍)。
相关文章推荐
- JavaSE学习总结第17天_集合框架3
- Java集合框架学习总结
- 黑马程序员——学习日记之--集合框架知识总结
- java 集合框架学习总结
- 【学习日记】集合框架知识点总结(2)--Map
- Java学习----集合框架总结
- Java集合框架学习总结
- Java基础6:集合框架学习总结
- 【IOS 开发学习总结-OC-28】★objective-c之foundation 框架——集合类的综述
- 【Java开发】--Java集合与框架总结与学习
- 项目阶段学习总结(设计集合框架、JPA、个人思路)
- 黑马程序员--集合框架知识总结和泛型--java学习日记7(基础知识)
- JavaSE学习总结第15天_集合框架1
- Java集合框架学习总结
- Java集合与框架总结与学习
- 【学习日记】集合框架知识点总结(1)--Collection
- 黑马程序员_java 集合框架学习总结
- 【IOS 开发学习总结-OC-30】★★OC之foundation 框架——集合(NSSet 与 NSMutableSet)
- 【学习日记】集合框架知识点总结(3)--工具类
- 集合框架Vector中的枚举以及LinkedList的学习总结