集合的基本概念:
集合类和数组有许多不同之处,比如数组的长度是不可变的,而集合的长度是可变的(集合基于数组或链表,集合的数组会扩容,链变的不需要扩容),集合只能存储引用数据类型,不能存放基本数据类型:数组创建要指定大小,集合不需要。
java中的集合主要有两个派生接口,即Collection和Map,其中Collection接口派生出了list集合和Set集合,各个接口提供了不同的实现类
- 一、collection接口
java.until.collection是集合的基本接口,存储单个值,它位于集合类的顶层,接口定义如下:
public interface Collection<E> extends Iterable<E>
Collection接口的方法定义:
方法名 | 作用 |
add(E o) | 向集合插入元素 |
addAll(Collection<? extends E c) | 向集合中添加一个集合 |
clear() | 向集合中添加一个集合 |
contains(Object o) | 判断集合中是否存在指定的元素,存在,返回true |
containsAll(Collection<? extends E> c) | 判断集合中是否存在指定的集合,存在,返回true |
equals(Object o) | 判断两个集合是否相等 |
hashCode() | 返回此collection的哈希码值 |
isEmpty() | 判断此集合是否为空 若为空,返回true |
iterator() | 为Iterator接口的实例化,用于遍历集合中的元素 |
remove(Object o) | 从集合中删除指定元素 |
remove(Collection<?> c) | 从集合中删除指定集合 |
retainAll(Collection<?> c) | 保存集合中所有在集合c中出现的元素,求交集的 |
size() | 返回此集合中元素的个数 |
toArray() | 返回包含此元素中所有元素的对象数组 |
toArray(T[] a) | 返回包含此元素中所有元素的对象数组,并可以指定返回的数组类型 |
list:以特定次序来持有元素,可以有重复元素,即有序可重复
Set:无法拥有重复元素,内部排序,即,无序不可重复。
Map:保存的是Key-value值,一一映射。
- 二、Map接口
Map:是一个独立的接口,Map集合中的key不允许重复,每一个key只能映射一个value。
public interface Map<K,V>
- 三、Collection和Collections
collection是java.until下的接口,它是各种集合的父接口,主要有Set,List;
CollectionS是个 java.util 下的类,是针对集合的帮助类,Collections中提供了一系列的静态方法例如排序、查找、反转、替换、取最小元素、线程安全化等等,其中大多数方法都用来处理线性表,它就像一个工具类,是给Collection接口打辅助的。
- 四、具体的集合有哪些:
集合类型 | 描述 |
ArrayList | 一种可以动态增长和缩减的索引序列 |
Linkedlist | 一种可以在任意位置进行高效地进行删除或者插入有序序列 |
HashSet | 一种没有重复元素的无序集合 |
TreeSet | 一种有序集合 |
EnumSet | 一种含有枚举类型的值的集 |
linkedHashSet | 可以记住元素插入次序的集 |
HashMap | 一种存储键——值关系的数据结构 |
TreeMap | 一种键——值有序的排列的数据结构 |
LinkedHashMap | 一种可以记住键——值项添加的映射表 |
WeakHashMap | 一种其值无用武之地后可以被垃圾回收器回收的映射表 |