{__STYLE__}
咨询电话:18678002022

java集合框架的初步认识

2021-05-14 14:46:30 点击:1812次

      在java中集合使用可谓非常广泛,集合类是java.util包中的重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再以一个类的形式提供。集合类是可以往里面保存多个对象的类,存放的是对象,不同的集合类有不同的功能和特点,适合不同的场合,用以解决一些实际问题。

集合框架被设计成要满足以下几个目标

1. 该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。

2. 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。

3.  对一个集合的扩展和适应必须是简单的。为此,整个集合框架就围绕一组标准接口而设计。
    你可以直接使用这些接口的标准实现,诸如: LinkedList, HashSet, 和 TreeSet 等,
    除此之外你也可以通过这些接口实现自己的集合。

Java集合框架图如下:



      从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。

      Java集合相信大家都或多或少都用过,这里就不具体介绍了,下面主要就看看这些集合有那些区别:

      大的区别

      提供这么多的集合类,总的来说也就是为了实现不同的功能,比如Set元素不能重复,List可以重复,Queue先进先出,不允许随机访问队列中的元素,Map含健值对,每个里面又可以再细分一些类可以排序,或支持并发等。

      像LinkedList实现了List和Queue,既能作为 先进先出队列,又能作为 双端队列,还具备栈的能力。

      LinkedHashSet继承HashSet,ArrayDeque实现Queue,用数组实现双端队列。

      Stack 基于 Vector 实现。TreeSet 基于 TreeMap 实现,支持排序。

      ArrayList,HashSet,LinkedHashSet,HashMap ,LinkedHashMap ,Hashtable ,LinkedList,Vector 等实现的区别

      ArrayList:该类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。

      HashSet:该类实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。

      LinkedHashSet:具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。

     HashMap :是一个散列表,它存储的内容是键值对(key-value)映射。该类实现了Map接口,根据键的   HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。

      LinkedHashMap :继承于HashMap,使用元素的自然顺序对元素进行排序.

      Hashtable:是 Dictionary(字典) 类的子类,位于 java.util 包中。是线程安全的;

      LinkedList:该类实现了List接口,允许有null(空)元素。主要用于创建链表数据结构,该类没有同步方法,需自己去实现访问同步,实现方式是在创建List时,创建一个同步List,如:
List list = Collections.synchronizedList(newLinkedList(…));

      Vector :该类和ArrayList非常相似,但是该类是同步的,可以用在多线程的情况,该类允许设置默认的增长长度,默认扩容方式为原来的2倍。

返回顶部
返回顶部