前言
容器类是Java以类库的形式供用户开发程序是可直接使用的各种数据结构。所谓数据结构就是以某种方式将数据组织在一起,并储存到计算机中。数据结构用来储存数据且支持访问与处理等操。数组就是一种简单的数据结构,Java还提供了许多其他的数据结构。这些数据结构通常称为容器类或集合类。
一、Java容器框架
二、Collection<E>接口
容器接口Collection<E>通常不能使用,但该接口提供了添加元素、删除元素、管理数据的方法。
由于Set<E>接口和List<E>接口都继承自Collection<E>接口,因此这些方法对集合接口Set<E>和列表接口List<E>是通用的。
Collection<E>接口的常用方法:
三、列表接口List<E>
列表接口List<E>接口是Collection<E>子接口,它是一种包含有序元素的线性表,其中的元素必须按顺序排放,且可重复,也可以是空值nul。List<E>接口使用下表访问元素。
List<E>接口的常用方法:
实现List<E>接口的类主要有两个:链表类LinkedList<E>和数组列表类ArrayList<E>,它们都是线性表。
链表类LinkedList<E>采用链表结构保存对象,使用循环双链表实现List<E>。在插入、删除元素时不要移动其他元素,链表大小是动态增大或减小的,但不具有随机取特性。
数组列表类ArrayList<E>使用一维数组实现List<E>,该类实现的是可变数组,允许所有元素,包括null。具有随机存取特性,插入、删除元素时需要移动其他元素,但速度较慢。
选择LinkedList<E>与ArrayList<E>遵守的的原则是若要通过下标随机访问元素,仅在末尾处处理元素,选择ArrayList<E>;要在任意位置处理元素则选择LinkedList<E>。
LinkedList<E>常用方法
四、集合接口Set<E>
Set<E>是一个不含重复元素的集合接口,它继承自Collection<E>接口,实现Set<E>接口的两个主要类是哈希集合类HashSet<E>和树集合类TreeSet<E>。
HashSet<E>集合不保证迭代顺序,允许元素值为null。在比较两个哈希集合中的元素是否相等时,要重写元素对应的equals()或hashCode()方法中的一个,因为不同元素所计算出的哈希码可能相同。
HashSet<E>集合类的常用方法:
TreeSet<E>原理与HashSet<E>相似,但重要的一点是TreeSet<E>中的元素总是有序状态。
TreeSet<E>类常用方法:
五、映射接口Map<K,V>
Map<K,V>是另一种储存数据结构的对象,Map<K,V>没有继承Collection<E>接口,它的对象都是成对存在的,提供了键(key)到值(value)的映射。在存入值时要给它定一个键,键锁定了元素在Map<K,V>中存储位置。每个键都是唯一的,每个键最多只能映射一个值。
Map<K,V>接口常用方法
Map<K,V>常用实现类有哈希映射HashMap<K,V>和树映射TreeMap<K,V>.前者操作时效率高且允许使用null,后者存在顺序。
TreeMap<K,V>常用方法
总结
在Java中,主要的容器类有Collection<E>的子接口List<E>、Set<E>,以及Map<K,V>。list是一种有序的集合,可以包含重复元素;set是一种无序且不允许重复元素的集合;map是一种键值对的集合,每个键对应一个值。它们都是常用的数据结构,可根据实际需求选择使用。