在 Java 中数组的长度是不可修改的。然而在实际应用的很多情况下,无法确定数据数量。这些数据不适合使用数组来保存,这时候就需要使用集合。
Java 的集合就像一个容器,用来存储 Java 类的对象。有些容器内部存放的东西在容器内部是不可操作的,像水瓶里的水,除了将其装入和倒出之外,就不能再进行别的操作了,但是很容易装入和倒出;而有些容器内部存放的东西在容器内部是可以操作的,例如,衣柜里面摆放的衣服,不仅可以将衣服存放到衣柜中,还可以将衣服有序地摆放,以便在使用时快速查找,但是却不容易取出。Java 的集合类比这些容器功能还多,其中有些是方便放入和取出的,有些是方便查找的。在集合中经常会用到泛型来使集合更加安全。
集合集合类都位于 java.util 包,其中提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。一个集合是一个对象,但它表示一组对象,Java 集合中实际存放的是对象的引用值,不能存放基本数据类型值。
集合中的接口集合框架是一个类库的集合,包含实现集合的接口。接口是集合的抽象数据类型,提供对集合中所表示的内容进行单独操作的可能。
Collection 接口:该接口是最基本的集合接口,一个 Collection 代表一个元素。
List 接口:该接口实现了 Collection 接口。List 是有序集合,允许有相同的元素。使用 List 能够精确地控制每个元素插入的位置,用户能够使用索引(元素在 List 中的位置,类似于数组下标)来访问 List 中的元素,与数组类似。
Set 接口:该接口也实现了 Collection 接口。它不能包含重复的元素,SortedSet 是按升序排列的 Set 集合。
Map 接口:包含键值对,Map 不能包含重复的键。SortedMap 是一个按升序排列的 Map 集合。
Java 平台提供了许多数据集接口的实现类。例如实现 Set 接口的常用类有 HashSet 和 TreeSet,它们都可以容纳所有类型的对象,但是不能保证序列顺序永久不变
实现 List 接口的常用类有 ArrayList 和 LinkedList,它们也可以容纳所有类型的对象包括 null,并且都保证元素的存储位置。
实现 Map 映射的类是 HashMap,可实现一个键到值的映射。
HashSet:为优化査询速度而设计的 Set。它是基于 HashMap 实现的,HashSet 底层使用 HashMap 来保存所有元素,实现比较简单。
TreeSet:该类不仅实现了 Set 接口,还实现了 java.util.SortedSet 接口,该实现类是一个有序的 Set,这样就能从 Set 里面提取一个有序序列。
ArrayList:一个用数组实现的 List,能进行快速的随机访问,效率高而且实现了可变大小的数组。
LinkedList:对顺序访问进行了优化,但随机访问的速度相对较慢。此外它还有 addFirst()、addLast()、getFirst()、getLast()、removeFirst() 和 removeLast() 等方法,能把它当成栈(Stack)或队列(Queue)来用。
Collection 接口是 List 接口和 Set 接口的父接口,通常情况下不被直接使用。Collection 接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作。因为 List 接口和 Set 接口继承自 Collection 接口,所以也可以调用这些方法
boolean add(E e) 向集合中添加一个元素,E 是元素的数据类型 boolean addAll(Collection c) 向集合中添加集合 c 中的所有元素 void clear() 删除集合中的所有元素 boolean contains(Object o) 判断集合中是否存在指定元素 boolean containsAll(Collection c) 判断集合中是否包含集合 c 中的所有元素 boolean isEmpty() 判断集合是否为空 Iterator<E>iterator() 返回一个 Iterator 对象,用于遍历集合中的元素 boolean remove(Object o) 从集合中删除一个指定元素 boolean removeAll(Collection c) 从集合中删除所有在集合 c 中出现的元素 boolean retainAll(Collection c) 仅仅保留集合中所有在集合 c 中出现的元素 int size() 返回集合中元素的个数 Object[] toArray() 返回包含此集合中所有元素的数组 public static void main(Strmg[] args) { ArrayList list1=new ArrayList(); //创建集合 iist1 ArrayList list2=new ArrayList(); //创建集合 Iist2 list1.add("one"); //向 list1 添加一个元素 list1.add("two"); //向 list1 添加一个元素 list2.addAll(list1); //将 list1 的所有元素添加到 list2 list2.remove(0); //删除第一个元素 } List集合