Java基础学习记录--Collections框架

来源:互联网 发布:linux系统运行exe文件 编辑:程序博客网 时间:2024/05/16 15:06

Java Collections 框架中包含了大量集合接口以及这些借口的实现类和操作它们的算法,主要提供了List(列表)、Set(集合)、Queue(队列)、Stack(栈)和Map(映射表)

下面对于Set、Lis和Map三个接口进行介绍

Set表示数学意义上的集合概念,主要的特点是集合中的元素不能重复。有2个实现类,HashSet和TreeSet(实现了SortedSet,因此它的元素是有序的)

List称为有序的Collection。可以保存重复的对象,能够对列表中每个元素的插入和删除位置进行精确的控制,LinkedList、ArrayList和Verctor都实现了List接口

Map提供一个从键映射到值的数据结构,用于保存键值对,键唯一,值可以重复。它的实现:HashMap基于散列表实现的,LinkedHashMap采用列表来维护内部的顺序,TreeMap基于红黑树的数据结构来实现。

下面讲讲LinkedList、ArrayList和Verctor的区别?

ArrayList和Verctor会在内存中开辟一块连续的空间来存储,因为数据存储连续,所以支持用序号(下标)来访问元素,同时索引数据的速度比较快。但是在插入元素时,需要移动容器中的元素,所以对数据的插入操作执行比较慢。ArrayList不是线程安全的,而Verctor是线程安全的。

LinkedList是采用双向列表实现的,非线程安全,插入效率高,因为对数据索引需要从头开始遍历,访问效率则比较低。

下面讲讲Map实现类的区别?

HashMap是最常用的,根据键就能获取值,访问速度快

HashMap和HashTable的区别?

HashMap是HashTable的轻量级实现,HashMap允许空(null)键值(最多只允许一条记录的键值为null),而HashTable不允许。

HashMap把HashTable的contains方法改成了containsValue和containsKey

HashTable继承自Dictionary,而HashMap是Java1.2引进的Map接口的一个实现

HashTable使用Enumetation,HashMap使用Iterator

HashTable中hash数组默认大小11,HashMap中hash数组默认大小16

HashTable线程安全的,HashMap中hash线程不安全的

TreeMap实现了SortMap接口,能够把它保存的记录根据键排序,LinkedHashMap是HashMap的一个子类,如果需要输出的顺序和输入的相同可以使用,WeekHashMap与HashMap类似,不过它的key采用"弱引用",只要key不被外部引用,就可以被垃圾回收期回收。



1 0