20180826(02)-Java集合框架

 

Java 集合框架java


早在Java 2中以前,Java就提供了特设类。
好比:Dictionary, Vector, Stack, 和Properties这些类用来存储和操做对象组。程序员

虽然这些类都很是有用,可是它们缺乏一个核心的,统一的主题。因为这个缘由,使用Vector类的方式和使用Properties类的方式有着很大不一样。算法

集合框架被设计成要知足如下几个目标。数组

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

2.该框架容许不一样类型的集合,以相似的方式工做,具备高度的互操做性。架构

3.对一个集合的扩展和适应必须是简单的。框架


为此,整个集合框架就围绕一组标准接口而设计。
你能够直接使用这些接口的标准实现,诸如: LinkedList, HashSet, 和 TreeSet等,除此以外你也能够经过这些接口实现本身的集合。数据结构和算法


集合框架是一个用来表明和操纵集合的统一架构。全部的集合框架都包含以下内容:性能

接口:是表明集合的抽象数据类型。接口容许集合独立操纵其表明的细节。在面向对象的语言,接口一般造成一个层次。设计

实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构。

算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是由于相同的方法能够在类似的接口上有着不一样的实现。

除了集合,该框架也定义了几个Map接口和类。Map里存储的是键/值对。尽管Map不是collections,可是它们彻底整合在集合中。

 

集合接口

集合框架定义了一些接口。本节提供了每一个接口的概述:


Collection 接口
容许你使用一组对象,是Collection层次结构的根接口。


List 接口
继承于Collection和一个 List实例存储一个有序集合的元素。


Set
继承于 Collection,是一个不包含重复元素的集合。


SortedSet
继承于Set保存有序的集合。


Map
将惟一的键映射到值。


Map.Entry
描述在一个Map中的一个元素(键/值对)。是一个Map的内部类。


SortedMap
继承于Map,使Key保持在升序排列。


Enumeration
这是一个传统的接口和定义的方法,经过它能够枚举(一次得到一个)对象集合中的元素。这个传统接口已被迭代器取代。

 

集合类

Java提供了一套实现了Collection接口的标准集合类。其中一些是具体类,这些类能够直接拿来使用,而另一些是抽象类,提供了接口的部分实现。

标准集合类汇总于下表:


AbstractCollection
实现了大部分的集合接口

AbstractList
继承于AbstractCollection而且实现了大部分List接口

AbstractSequentialList
继承于 AbstractList ,提供了对数据元素的链式访问而不是随机访问。

LinkedList
继承于 AbstractSequentialList,实现了一个链表。

ArrayList
经过继承AbstractList,实现动态数组。

AbstractSet
继承于AbstractCollection 而且实现了大部分Set接口。

HashSet
继承了AbstractSet,而且使用一个哈希表。

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

TreeSet
继承于AbstractSet,使用元素的天然顺序对元素进行排序.

AbstractMap
实现了大部分的Map接口。

HashMap
继承了HashMap,而且使用一个哈希表。

TreeMap
继承了AbstractMap,而且使用一颗树。

WeakHashMap
继承AbstractMap类,使用弱密钥的哈希表。

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

IdentiyHashMap
继承AbstractMap类,比较文档时使用引用相等。

 

Vector
Vector类实现了一个动态数组。和ArrayList和类似,可是二者是不一样的。

Stack
栈是Vector的一个子类,它实现了一个标准的后进先出的栈。

Dictionary
Dictionary 类是一个抽象类,用来存储键/值对,做用和Map类类似。

Hashtable
Hashtable是原始的java.util的一部分, 是一个Dictionary具体的实现 。

Properties
Properties 继承于 Hashtable.表示一个持久的属性集.属性列表中每一个键及其对应值都是一个字符串。

BitSet
一个Bitset类建立一种特殊类型的数组来保存位值。BitSet中数组大小会随须要增长。

一个Bitset类建立一种特殊类型的数组来保存位值。BitSet中数组大小会随须要增长。

 

 

集合算法

集合框架定义了几种算法,可用于集合和映射。这些算法被定义为集合类的静态方法。

在尝试比较不兼容的类型时,一些方法可以抛出 ClassCastException异常。当试图修改一个不可修改的集合时,抛出UnsupportedOperationException异常。

集合定义三个静态的变量:EMPTY_SET EMPTY_LIST,EMPTY_MAP的。这些变量都不可改变。


Collection Algorithms
这里是一个列表中的全部算法实现。

 

 

如何使用迭代器

一般状况下,你会但愿遍历一个集合中的元素。例如,显示集合中的每一个元素。
作到这一点最简单的方法是采用一个迭代器,它是一个对象,实现了Iterator 接口或ListIterator接口。

迭代器,使你可以经过循环来获得或删除集合的元素。ListIterator继承了Iterator,以容许双向遍历列表和修改元素。

这里经过实例列出Iterator和listIterator接口提供的全部方法。

 

如何使用比较器

TreeSet和TreeMap的按照排序顺序来存储元素. 然而,这是经过比较器来精肯定义按照什么样的排序顺序。

这个接口可让咱们以不一样的方式来排序一个集合。

比较器方法描述
使用 Java Comparator
这里经过实例列出Comparator接口提供的全部方法


总结

Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们。集合是一个对象,可容纳其余对象的引用。集合接口声明对每一种类型的集合能够执行的操做。集合框架的类和接口均在java.util包中。

相关文章
相关标签/搜索