Java集合

Java结合类

Java 语言里面,如果我们要存放一组对象,通过前面的知识,我们知道 数组 可以满足这样的条件,但是对数组的操作本身有一个限制,它的长度是固定的。

Java 类集合框架正好解决了上面的问题,它就是一个动态的对象数组。对一些实现好的数据结构进行了包装,在使用的时候会非常方便。它不会受数组长度的限制。

Java集合框架特性

Java 类集合框架设计拥有下面特性:

  1. 高性能,对基本类集(动态数组、链接表、树和散列表)的实现是高效率的。
  2. 框架它允许不同类型的类集合拥有相同的方式对集合操作。
  3. 类集合是容易扩展和修改的。因此类集框架有一组标准的接口。

Java语言集合接口

常用的类集合有:Collection、List、Set、Map、Iterator、ListIterator、SortedSet、SotedMap、Queue。

01 java 集合.jpg

特点

接口 描述
Collection 存放一组元素,每个元素都是对象的最大父接口。它是一些结合的父接口。
List 是 Collection 接口的子接口,它在 Collection 基础上进行了扩充,里面的内容是允许重复的
Set 是 Collection 接口的子接口,它在 Collection 基础上进行了扩充,里面的内容不允许重复
Map 是存放键值对的最大接口,其他的键值对接口或对象是其子类,以 key-value 形式保存
Iterator 集合的输出接口,从前往后输出集合中的内容
ListIterator 是 Iterator 子类,可以进行从前到后或者从后到前的双向内容输出
SortedSet 集合中存储一个类型元素的排序接口,实现此接口的集合里面里面的元素是有序的,按照自定义规则进行排序
SortedMap 集合里面的键值对的内容是有序的,按照自定义规则对key进行排序
Queue 队列接口,该接口子类可以实现队列操作

Java Collection

Collection 接口是所有的单元素结合的父类,它的接口如下:

public interface Collection<E> extends Iterable<E>;

从定义可以看出 Collection 集合使用了 泛型,在使用的时候,我们必须要指定具体的操作类型。Collection 定义了如下方法:

方法 描述
boolean add(E e); 向集合中添加元素
boolean addAll(Collection<? extends E> c); 向一个结合中添加一个集合
void clear(); 清楚此集合里面的所有元素
boolean contains(Object o); 判断某一个对象是否在集合里面
boolean containsAll(Collection<?> c); 判断某一个结合里面的对象是否在集合里面
boolean equals(Object o); 判断两个对象是否相等
int hashCode(); 获取该集合对应的hash码
boolean isEmpty(); 判断集合是否为空
Iterator iterator(); 为 Iterator 接口实例化
boolean remove(Object o); 删除指定的对象
boolean removeAll(Collection<?> c); 删除一组对象
boolean retainAll(Collection<?> c); 保存指定的内容
int size(); 获取集合的大小
Object[] toArray(); 将一个集合变为数组
T[] toArray(T[] a); 指定好返回的对象数组类型

Collection 是一个集合,在开发过程中,我们很少直接使用 Collection,而是用它的子接口,List、Set、Queue 和 SortedSet。

Java Map

Map 接口里面存放的是一对对象,它存储的是键值对,每个元素都是用 “key -> value” 形式。Map 接口如下:

public interface Map<K,V>

从定义可以看出 Map 集合使用了泛型,在使用的时候,我们必须要指定具体的操作类型。Map 定义了如下方法:

方法 描述
void clear() 清空 Map 集合
boolean containsKey(Object key); 判断指定的 key 是否存在
boolean containsValue(Object value); 判断指定的 value 是否存在
Set<Map.Entry<K, V>> entrySet(); 将 Map 对象转为 Set 集合
boolean equals(Object o); 判断两个对象是否相等
V get(Object key); 根据 key 取值
int hashCode(); 获取对应的 hashmap 的hash 码
boolean isEmpty(); 判断集合是否为空
Set keySet(); 获取 Map 的所有的key
V put(K key, V value); 向集合中添加元素
void putAll(Map<? extends K, ? extends V> m); 将一个 Map 结合添加到另一个 Map 集合里面
V remove(Object key); 根据 key 移除 value
int size(); 获取集合的大小
Collection values(); 取出 Map 里面的所有的 value

Java集合总结

集合里面存放的是对象,基本数据类型如果想要存储在集合里面,会进行自动装箱。它封装了一些对数组或者链表或者树等等数据结构的基本操作,让程序员方便调用。